最近、いくつかの簡単なフォーム送信を含む Web サイトに取り組んでいました。古典的な昔ながらの html の方法 (つまり、"action=" 属性、ボタンなどを含むフォーム タグ) で送信を処理するのではなく、jquery の .ajax() メソッドを介してデータを送信することにしました。
そのように処理するには、「送信」後にフォーム フィールドを明示的にクリアする必要がありました。実際のフォームは次のようになったとしましょう。
<form action="some_page.asp" id="my_form" method="post">
<input type="checkbox" name="form_field" value="some_value" />
<input type="checkbox" name="form_field" value="some_other_value" />
<input type="checkbox" name="form_field" value="yet_another_value" />
<input type="text" name="form_field" />
<input type="hidden" name="form_field" class="MUST_NOT_CLEAR" value="" />
<input type="hidden" name="form_field" class="MUST_CLEAR" value="" />
<input type="hidden" name="form_field" class="MUST_CLEAR" value="" />
</form>
さて、フォームには古典的な「アクション」属性がありますが、私は実際にはそれを使用していません。JQUERY .ajax() を介してデータを送信しているため、「送信」後にフォーム フィールドをクリアまたはリセットする必要があります。
それで、本当の質問...どうしてこのコードが来るのですか:
$("#my_form").find("input:checkbox").removeAttr("checked");
$("#my_form").find("input:text").val("");
$("#my_form").find("input:hidden[class=MUST_CLEAR]").val("");
これに対して、すべての適切なフィールドを正常にクリアします:
$("#my_form").find("input:checkbox").removeAttr("checked");
$("#my_form").find("input:text").val("");
$(".MUST_CLEAR").val("");
ではない?