いくつかの厄介な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を返す場合は送信することを意図していますが、それはオブジェクトを返すだけです。その関数から応答テキストを取得することは可能ですか?...多分?または、個々の検証関数内から現在実行されている送信イベントを強制的に停止する別の方法はありますか?
いつものように、どんなアドバイスも大歓迎です。
ダン