1

いくつかの厄介なjQueryフォーカスアウト検証を使用して、何時間もかかった素敵なフォームをまとめました。focusout属性は、onloadの入力フィールドに付加されます。次に、submitでfocusoutイベントをトリガーして検証関数を再利用しますが、検証関数のいずれかが失敗した場合にフォームの送信を無効にする方法がわかりません。ここに完全な例(jsfiddle)

削減例:

addLoadEvent(AttachVal);

関数AttachVal(){

  $('input[name="FirstName"]').focusout(NameTest);
  $('input[name="LastName"]').focusout(NameTest);
  $('form[name="Register"]').submit(SubmitRegForm);

}

関数SubmitRegForm(){

  $('input[name="FirstName"]').trigger('focusout');
  $('input[name="LastName"]').trigger('focusout');
  alert ("Submitting");       

falseを返します。
}

検証機能:

function NameTest(){

var result = true;          
var EnteredValue = $(this).val();
var alphaExp = /^[a-zA-Z ]+$/;

    if (!(EnteredValue.match(alphaExp)))
    {
        var result = "Invalid"; 
    }   

    if (result !== true)
    {
        $(this).parent().next().children('span.ErrorDescript').text(result);
    }
    else
    {           
        $(this).parent().next().children('span.ErrorDescript').text("");        
    }

}

次のようにSubmitRegForm関数に変数をアタッチしてみました。

var FNStat = $('input[name="FirstName"]').trigger('focusout');

それらすべてをチェックし、それらがすべてtrueを返す場合は送信することを意図していますが、それはオブジェクトを返すだけです。その関数から応答テキストを取得することは可能ですか?...多分?または、個々の検証関数内から現在実行されている送信イベントを強制的に停止する別の方法はありますか?

いつものように、どんなアドバイスも大歓迎です。

ダン

4

2 に答える 2

2

フォームの送信をキャッチする正しい方法は次のとおりです。

$('#form').submit(function(e){
    // Unfocus and validation logic here.
    e.preventDefault();
});

はフォームのe.preventDefault()送信を停止します。

于 2011-05-23T22:51:36.783 に答える
1

これが更新されたフィドルです。私が行ったのは、SubmitRegForm()メソッドを返すことで、表示されている目盛りの画像の数を確認し、ゼロの場合はフォームを送信します。

于 2011-05-23T22:56:45.417 に答える