我写了一个验证输入的例程。它工作正常,但当我输入字符a然后它只是接受。这是我的代码。
function isValidPhoneNumber(val) {
var flag = true;
var invalidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@!$#";
if (flag) {
for (index = 0; index <= val.length - 1; index++) {
var phchars = val.substring(index, index + 1);
if (invalidChars.indexOf(phchars) > 0) {
flag = false;
break;
}
}
}
return flag;
}
假如我给了val ='+ 9122a5669974'那么它返回true。 indexof功能无法找到a ....为什么。请告诉我例程中有什么问题。如果找到存在于invalidChars变量中的任何char,则例程应该返回false但是当找到then例程时返回true。帮我抓住错误。感谢
答案 0 :(得分:2)
请尝试使用以下代码行。
if (invalidChars.indexOf(phchars) != -1) {
答案 1 :(得分:2)
你的行
if (invalidChars.indexOf(phchars) > 0) {
应该是
if (invalidChars.indexOf(phchars) > -1) {
然而,我会考虑使用正则表达式作为更好的方法。
答案 2 :(得分:1)
试试这个,
jQuery.validator.addMethod("mobileNL", function(value, element) {
return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\- \s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(value);
}, "Please specify a valid mobile number");
additional-methods.js中提到的方法
使用jquery验证插件进行客户端验证很有趣。重要的是,您可以添加自定义方法。
下载&amp;将以下脚本添加到master,layout或要启用客户端验证的任何位置。
1.1 jquery-1.8.3.min.js(或以上)链接:http://code.jquery.com/jquery-1.8.3.min.js
1.2 jquery.validate.min.js&amp; additional-methods.js(http://jqueryvalidation.org/)
2.现在创建验证规则&amp;信息。例如
var jq = jQuery.noConflict(true);
(function ($) {
$(document).ready(function () {
$('#FormName').validate({
highlight: function (element, errorClass, validClass) {
$(element.form).find("input[id=" + element.id + "]").addClass("input");
},
rules: {
PhoneNumber: {
required: false,
mobileNL: true,
max: 10
}
},
messages: {
PhoneNumber: {
mobileNL: "Please enter a correct phone",
max: "Please specify the number less or equal to 10"
}
},
submitHandler: function (form) {
form.submit();
return false;
}
});
});
})(jq);
创建一个新的js文件,保存为jq_validation.js添加上面的代码。并按此顺序调用它
你的html应该是这样的并完成。
“&lt;%:Html.TextBoxFor(model =&gt; model.PhoneNumber,new {@class =”input“})%&gt;”