0

現在、電子メールを含む入力フィールドで検証を実行しています。[送信] をクリックしたときに、電子メール フィールドが検証されない場合、エラー オーバーレイが表示されます。

私の問題は、検証するかどうかに関係なく、フォームが送信されることです。すべてが検証された場合にのみ送信するにはどうすればよいですか (私の例では電子メール フィールド)。

var clicked = $("button");

clicked.click(function() {
    var email = $("input[type='email']").val();
    if (!validateEmail(email)) {
        //Show validation error
    } else {
        //Dont show validation error
    }
});

ここで私のセットアップのフィドル

4

2 に答える 2

1

イベントをクリック関数に渡し、preventDefault検証が失敗した場合はイベントを呼び出します。 preventDefault は、イベントのデフォルト アクションが発生しないようにします。

var clicked = $("button");

clicked.click(function(e) {
    var email = $("input[type='email']").val();
    if (!validateEmail(email)) {
        e.preventDefault();
    } else {
        //Dont show validation error
    }
});

作業例: http://jsfiddle.net/2FfQw/1/

于 2013-04-29T08:48:05.603 に答える
0

それにはいくつかの方法があります。私のお気に入りは、フォーム送信イベントへのフックで、検証が失敗した場合は false を返します。

$('#form-id').submit(function() {
  // do validation

  if (!valid)
    return false;

  // if it's valid it will submit, no need to return true
}

また、サブミットに ajax を使用する場合に使用するフックとしても適しています。

于 2013-04-29T09:04:07.767 に答える