保持提交按钮禁用,而jquery.validation错误为真

问题描述:

让我的验证工作正常的问题。使用jquery.validate做一个基本的登录表单,只需要几个字段。我保持禁用输入按钮,直到所有验证都已通过,但无法正常工作。只要焦点离开第一个字段并显示错误消息,第二个输入字段的错误就会显示出来。希望只有在字段接收焦点并失去焦点并检测到错误后,才会显示错误消息,就像它通常为jquery.validate一样。保持提交按钮禁用,而jquery.validation错误为真

所以基本上,保持提交按钮被禁用,直到所有字段都有效,但在字段被激活然后失败之前不显示错误消息。

这是我现在的小提琴:

FIDDLE

这里是JS:

$('#my-login').validate({ 
onkeyup: false, 
ignore: ":disabled,:hidden", 

     submitHandler: function (form) { 
     form.submit(); 
     } 
     }); 
     $('#my-login input').on('blur', function() { 
    var empty = false; 
    $('#my-login > input').each(function() { 
    if ($(this).val() == '') { 
     empty = true; 
    } 
    }); 
    if (this.form != (empty) && $('#my-login').valid()) { 
    $('#singleSubmitBtnLoan').prop('disabled', false); 
    } else { 
    $('#singleSubmitBtnLoan').prop('disabled', 'disabled'); 
    } 
    }); 

    $("#singleSubmitBtnLoan").bind('click', function() { 
if ($('#my-login').valid()) { 
    $('#my-login').submit(); 
} 
}); 

而且我这里的形式:

<form id="my-login" name="my-login-form" action="notYetDude" method="get"> 
<div> 
    <label for="lastName" class="proximo">Last Name</label> 
     <input type="text" id="lastName" name="lastName" aria-required="true" class="inputExtender largeFont" maxlength="50" /> 
    </div> 
    <div class="inputAdjust"> 
     <label for="userNum">Last 4 Digits of userNum</label> 
     <input type="tel" id="userNum" name="userNum" aria-required="true" maxlength="4" size="5" /> 
    </div> 
    <div> 
    <label for="appId" class="proximo" id="tt1-label">Reference Number</label> 
     <input type="tel" id="appId" name="appId" aria-required="true" maxlength="10" size="11" value="12345678" /> 
    </div> 
    <div style="margin-top: -4px"> 
    <input type="submit" id="singleSubmitBtnLoan" class="dsu-button lightBlue dsuBtnStyleLogin" disabled="true">Sign In</input> 
    </div> 

+0

你的jsfiddle是做什么错误?因为当我尝试它时,只要所有字段都有效,“提交”按钮就会激活。 – Sparky 2014-09-01 01:01:02

+0

如果你要放入的唯一东西是默认函数,那么你显然不需要'submitHandler'。由于相同的原因,您也不需要'ignore'选项......默认情况下,插件将忽略所有隐藏和禁用的字段。 – Sparky 2014-09-01 01:03:02

+0

是的,但我不希望第二个输入的错误消息立即显示。请注意,当第一个输入字段失去焦点时,即使未聚焦,第二个字段也会立即显示错误消息。这是我目前遇到的问题。禁用功能正在工作,只是显示错误太早。 – 2014-09-01 01:04:59

我认为这是由于模糊事件对整个窗体调用有效,并显示错误。

我已经改变它来隐藏UI erros,而这样做。

如果检查中的模糊事件是现在的改变,

if (this.form != (empty) && $('#my-login').validate({ 
    errorClass: "invalidtemp" 
}).checkForm()) { 

... 
} 

请检查,如果这个工程需要:

http://jsfiddle.net/passionintellectual/bnhpznd0/2/

+0

就是这样!谢谢Ganesh! – 2014-09-01 01:41:50

+0

欢迎使用Isaac.Great。 – Ganesh 2014-09-01 03:05:02

+0

我会照顾这个Sparky。谢谢。 – Ganesh 2014-09-01 03:05:50