2012年3月に更新。
それで、私が最初にこの質問に答えてから2年後、私はそれがかなり大きな混乱に変わったことを確認しました。私がそれに戻って、正解を正解するときが来たと感じています。
ちなみに、元の投稿者が要求したものではないため、ティティの答えは間違っています-ネイティブのreset()メソッドを使用してフォームをリセットすることは可能ですが、この質問は、記憶されているフォームをクリアしようとしていますこの方法でリセットした場合にフォームに残る値。これが、「手動」リセットが必要な理由です。私はほとんどの人がGoogle検索からこの質問に終わって、本当にreset()メソッドを探していると思いますが、OPが話している特定のケースでは機能しません。
私の最初の答えはこれでした:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
これは、OPを含む多くのケースで機能する可能性がありますが、コメントや他の回答で指摘されているように、ラジオ/チェックボックス要素を値属性からクリアします。
より正確な答え(ただし完全ではない)は、
function resetForm($form) {
$form.find('input:text, input:password, input:file, select, textarea').val('');
$form.find('input:radio, input:checkbox')
.removeAttr('checked').removeAttr('selected');
}
// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name
使用して:text
、:radio
それ自体で、セレクタは、彼らが評価終わるようにjQueryで悪い習慣と考えられているなど、*:text
これはそれがはるかに長く、それが必要以上に取ることができます。私はホワイトリストのアプローチを好み、それを元の回答で使用したかったと思います。とにかく、input
セレクターの一部とフォーム要素のキャッシュを指定することで、ここでのパフォーマンスが最も良くなるはずです。
select要素のデフォルトが空白のオプションではない場合、この回答にはまだいくつかの欠陥があるかもしれませんが、それは確かに一般的であり、これはケースバイケースで処理する必要があります。
not()
、フォームに非表示の入力がある場合は、:hiddenを追加します。