0

HTML 5 フォーム検証 API を使用する HTML 5 アプリの単体テストを書いています。submitJSON にシリアライズしてサーバーに渡す前に、いくつかのカスタム処理を行うイベント ハンドラーをフォームに添付しました。

しかし、私が発見したsubmit()のは、フォームで jQuery イベントを開始すると、それが無効であっても、送信ハンドラーが呼び出されるということです。

代わりに、フォームが無効であるため、イベント ハンドラーが呼び出されていないことを期待します。

デモ用に JSFiddle を作成しました (Chrome 20 でテスト済み):

http://jsfiddle.net/jonbca/SYg4h/22/

それで、何が得られますか?

4

3 に答える 3

2

「.submit()」ハンドラーのトリガーは、HTML5 フォーム検証メカニズムとは何の関係もありません。このメカニズムは実際には JavaScript から完全に独立しており、実際、DOM API からはほとんど利用できません。フォーム要素で「checkValidity()」を明示的に呼び出すことができますが、それはブール値の結果を返すだけで、ユーザーが「送信」フォーム コントロールをクリックしたときに発生する視覚的なフォームの更新は一切行いません。

HTML5 の洗練された「スマート マークアップ」動作の多くは、JavaScript を必要とせずに実行できるように設計されていることを覚えておくことが重要です。

于 2012-07-18T15:41:53.057 に答える
0

送信ボタンをトリガーしてみてください:

$('#submitBtn').click();

持っていない場合は、アクションを複製する非表示のものを作成してください。

フィドル: http://jsfiddle.net/SYg4h/30/

于 2012-07-18T15:38:04.963 に答える
-1

ボタンでクリック ハンドラーを使用してみてください

$('#myform').submit(function (e) {
    // check for validation here
    var value = $('#foo').val();
    if (!value || value == undefined)
        $('#message').html('It did not submit');
    else
        $('#message').html("It submitted");
    return false;
});

$('#submitBtn').click(function(){
    $('#myform').submit();
});

これを試してください:http://jsfiddle.net/Cqzcu/4/

于 2012-07-18T15:36:03.233 に答える