13

次のHTMLがあるとします。

<form>
    ...some form fields...
    <input type="submit" id="submitButton" value="Submit" />
</form>

validateそして、さまざまな無効なシナリオについてフォームフィールドをチェックし、trueすべてが正常であるかfalse、何か問題があるかどうかを返すjavascriptメソッドがあります。

これを行うことの間でjQueryに実際の違いはありますか?

$("form").submit(function() {
    return validate();
});

...またはこれを行う:

$("#submitButton").click(function(){
    return validate();
});

そして、2つの間に何か長所/短所はありますか?

4

3 に答える 3

17

クリックコールバックは、ユーザーが実際に送信ボタンをクリックした場合にのみ呼び出されます。ただし、JavaScriptによってフォームを自動的に送信する場合があります。その場合、送信コールバックが発生している間はクリックコールバックは発生しません。アニメーションやボタンをクリックするアクションに関連するその他のものにはクリックコールバックを使用しながら、フォームの検証と固有のアクションには常に送信を使用することをお勧めします。

于 2012-10-08T16:02:11.747 に答える
2

クリックイベントは以前にトリガーされ、送信イベントはクリックイベントの後に発生します。

送信:

  • 一部のデータが間違っている場合、イベントをブロックするには遅すぎる可能性があります(マイナーおよび古いブラウザ)
  • 送信コマンドでもトリガー

クリック:

  • 圧倒的なイベント、ほぼすべてがクリックでバインドされます。パフォーマンス?
  • 送信コマンドではトリガーされません
于 2012-10-08T16:02:20.987 に答える
1

最初の方法の利点は、フォームが複数のボタンで送信されたり、さまざまなアクションを完了したりする場合、送信ボタンだけに検証を配置すると、他の方法で送信するとフォームが無効な状態になる可能性があることです。

最良の方法は、フォームの送信に検証を配置することです。これにより、フォームがどのように送信されても​​(ボタンをクリックするか、他の場所からプログラムで)、検証が実行されます。

于 2012-10-08T16:02:08.427 に答える