====== Clear form using jquery ====== jqueryを利用しFormのフィールドを初期化する方法を紹介する。 前提として、初期化するフィールドは以下に示す。 * input text * select * check box * radio button * textarea 除外するフィールドを以下に示す。 * button * input hidden * submit * reset まず、デモを見ながら動作を確認してみよう。 ===== demo =====
function clearForm(){
if(confirm('データをクリアにしてよろしいですか?')){
$("input[type='text'], textarea").not("input[readonly='true'], input[type='hidden'], :button, :submit, :reset").val("");
$("input[type='radio'], input[type='checkbox'], select").removeAttr("checked").removeAttr("selected");
$("select option:first-child").attr("selected", "selected"); // 1.6以前のバージョン
$("select").prop("selectedIndex", "0"); // 1.6以降
}
}
ここで、**removeAttr("selected")**だけでは初期値に戻すことができないので、先頭のものを選択する処理を追加している。\\
因みに、**.not("input[readonly='true']")**は読取り専用フィールドを除外する処理だけど、IEとFFで挙動が違う。\\
詳細は下で説明する。
===== browser issue for readonly field =====
IEで**readonly**フィルターが効くのは**readonly='true'**である。\\
FFで**readonly**フィルターが効くのは**readonly='readonly'**である。\\
ただし、**readonly**のみ書いてある場合は**readonly=''**で書かないと認識ができない。\\
ブラウザことに挙動が違うので、確実な方法は**name**で指定するのが最善だと思う。もっとスマートな方法はないのかな??
~~DISCUSSION~~