====== Clear form using jquery ====== jqueryを利用しFormのフィールドを初期化する方法を紹介する。 前提として、初期化するフィールドは以下に示す。 * input text * select * check box * radio button * textarea 除外するフィールドを以下に示す。 * button * input hidden * submit * reset まず、デモを見ながら動作を確認してみよう。 ===== demo ===== demo page for form reset using jQuery
Manufacturer
  Whole Sale Supplier
  Retailer
  Service Provider
===== code snippet ===== フォームを初期化するjqueryコードを次に示す。 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~~