gpt4 book ai didi

jquery - 在 jQuery Validate 插件中使用 addMethod

转载 作者:行者123 更新时间:2023-12-03 21:53:14 24 4
gpt4 key购买 nike

我想使用 jQuery Validate 插件的自定义验证方法 (addMethod) 验证文本框,但我的代码不起作用。谁能帮我找出错误吗?我以前从未使用过自定义验证方法,所以我很难找到这段代码中出错的地方。

这是我的代码:

$(document).ready(function () {

jQuery.validator.setDefaults({
// where to display the error relative to the element
errorPlacement: function(error, element) {
error.appendTo(element.parent().find('div.myErrors'));
}
});

jQuery.validator.addMethod(
"selectnic"
function(value,element){
if(element.value == /^[0-9]{9}[vVxX]$/)
return false;
else return true;
},
"wrong nic number"
);



$('#basicDetails').validate({ // initialize the Plugin
rules: {
fname: {
required: true,
lettersonly: true,
},
lname: {
required: true,
lettersonly: true,
},
},
messages: {
fname: {
required:"Please enter your first name",
lettersonly: "Login format not valid",

},
lname: {
required:"Please enter your last name",
lettersonly: "Login format not valid",
},
},
submitHandler: function (form) {
alert('valid form submitted');
return false;
}
});

});

..html 代码 ....

<form action="#" method="post"  id="basicDetails" runat="server">

<table width="68%" border="0" cellpadding="6" cellspacing="6">


<tr>
<td>&nbsp;</td>
<td> First name </td>
<td>:</td>
<td><input type="text" name="fname" id="fname" class="textbox" placeholder="Required field"/><div class="myErrors"></div></td> &nbsp;
<td align="right"> Last name&nbsp; :</td>
<td><input type="text" name="lname" class="textbox" id="lname" placeholder="Required field"/><div class="myErrors"></div></td>
</tr>

<tr>
<td>&nbsp;</td>
<td width="147" > NIC no </td>
<td> : </td>
<td width="172"><input type="text" name="nic" id="nic" class="textbox" placeholder="Required field"/><div class="myErrors"></div></td>
<td width="167" align="right">Passport no &nbsp; :</td>
<td width="167" id="showPP"> <input type="text" name="passport" class="textbox" id="ppnu" placeholder="Required field"/></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td colspan="3"><input type="submit" name="submit" value="Submit "class="submit" id="submit" />&nbsp; &nbsp;
<input type="submit" name="reset" value="Reset "class="reset" />
</td>
</tr>


</table>





</form>

......编辑我的代码后......

$(document).ready(function () {



jQuery.validator.setDefaults({
// where to display the error relative to the element
errorPlacement: function(error, element) {
error.appendTo(element.parent().find('div.myErrors'));
}
});

jQuery.validator.addMethod("selectnic", function(value, element){
if (/^[0-9]{9}[vVxX]$/.test(value)) {
return false;
} else {
return true;
};
}, "wrong nic number");


$('#basicDetails').validate({ // initialize the Plugin


rules: {
fname: {
required: true,
lettersonly: true,
},
lname: {
required: true,
lettersonly: true,
},

nicnumber: {
// other rules,
selectnic: true // <- declare the rule someplace!
}


},


messages: {

fname: {
required:"Please enter your first name",
lettersonly: "Login format not valid",

},
lname: {
required:"Please enter your last name",
lettersonly: "Login format not valid",

},
},


submitHandler: function (form) { // for demo
alert('valid form submitted'); // for demo
return false; // for demo
}
});

});

最佳答案

下面的进展编辑概述了三个不同的问题。

<小时/>

1)您在 selectnicfunction(.

之间漏掉了一个逗号。

此外,在使用正则表达式时尝试使用此格式...

jQuery.validator.addMethod("selectnic", function(value, element){
if (/^[0-9]{9}[vVxX]$/.test(value)) {
return false; // FAIL validation when REGEX matches
} else {
return true; // PASS validation otherwise
};
}, "wrong nic number");

编辑:此答案假设您的原始正则表达式和逻辑都是正确的。当 regex 匹配时,您的逻辑返回 falsefalse 表示验证失败,您将看到错误消息。

<小时/>

2)编辑2:

创建新方法后,您还必须使用它们。我没有看到您的代码中任何地方使用了 selectnic 规则/方法。

示例:

rules: {
myFieldName: {
// other rules,
selectnic: true // <- declare the rule someplace!
}
}
<小时/>

3)编辑3:

最后,OP 原来的 true/false 逻辑是倒退的。他希望通过正则表达式匹配的验证……因此,需要返回 true

    if (/^[0-9]{9}[vVxX]$/.test(value)) {
return true; // PASS validation when REGEX matches
} else {
return false; // FAIL validation
};

演示:http://jsfiddle.net/DzvNr/

关于jquery - 在 jQuery Validate 插件中使用 addMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23658228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com