如何使用ValidationEngine在整个表单验证之前验证字段

时间:2013-04-14 20:22:48

标签: jquery jquery-validation-engine

我正在尝试使用ValidationEngine(https://github.com/posabsolute/jQuery-Validation-Engine) 我需要验证一个字段(用于电子邮件),然后才能验证整个表单:

$(document).on("click", "#EmailButton", function(){
    var valid=$("#Email").validationEngine('validate');
    alert(valid);
})
$("#<?=$formName?>").validationEngine({
   promptPosition:'topLeft', 
   scroll: false,
   binded: false,
   onValidationComplete: function(form, status){
if(status==true){                    
           $.ajax({
                type: "POST", ... ... ... }
}

因此,当我点击#EmailButton时,应验证#Email字段,而不是整个表单。

但是当点击#EmailButton时,会运行$("#<?=$formName?>").validationEngine({的ajax脚本!

我需要此功能,因为我希望在填写#Email字段后对表单进行一些更改(如果电子邮件是否在数据库中)。

如何在运行#Email脚本之前验证$("#<?=$formName?>").validationEngine({})字段?

感谢。

3 个答案:

答案 0 :(得分:1)

试试这个:

在HTML中:

<form id="emailForm">
      Email:<input type="email" id="txtEmail" class="validate[required,custom[email],maxSize[30]]"/>
            <input type="button" value="Email Verify" onclick="emailCheck()"/>  
</form>

在Jquery中:

function emailCheck()
{
    if($("#emailForm").validationEngine('validate') == true)
    {
       alert('valid');
    }
    else
    {
       alert('not valid');
    }
}

答案 1 :(得分:1)

之前的答案是不正确的,只是因为jQuery Validation Engine的代码也不正确。由于当前版本中的错误,此代码段的布尔值实际上是向后的。尝试将“true”更改为“false”,您应该得到一个有效的结果。以下是更正后的示例(假设相关字段的ID为'email'):

function validateEmail() {
    var isValid = !$("#email").validationEngine('validate');

    // You may delete the following two lines after confirming that things are working:
    if (isValid) alert('valid');
    else alert('not valid');

    return isValid; // leave this line in -- it will return the result of validation
}

答案 2 :(得分:0)

$("#Email").validationEngine('validateField',$("#Email"))