审查
String.prototype.Contains = function (str) {
return this.indexOf(str) != -1;
};
如果包含在其自身中,则此字符串“方法”返回 true str,例如 'hello world'.indexOf('world') != -1 would returntrue`。
var validChars = '0123456789';
var str = $("#textbox1").val().toString();
的值$('#textbox1').val()已经是一个字符串,所以.toString()这里不需要。
if (str.Contains(validChars)) {
alert("found");
} else {
alert("not found");
}
这就是问题所在;有效地执行'1234'.indexOf('0123456789') != -1;false除非你有一个巨大的数字,否则它几乎总是会返回10123456789。
您可以做的是测试每个字符是否str包含在其中'0123456789',例如. 不过,它可以做得更容易。'0123456789'.indexOf(c) != -1cstr
解决方案
我知道你不喜欢正则表达式,但它们在这些情况下非常有用:
if ($("#textbox1").val().match(/^[0-9()]+$/)) {
alert("valid");
} else {
alert("not valid");
}
解释
[0-9()]是一个字符类,包括范围0-9的缩写0123456789和括号()。
[0-9()]+匹配至少一个与上述字符类匹配的字符。
^[0-9()]+$匹配所有字符与字符类匹配的字符串;^并$分别匹配字符串的开头和结尾。
最后,整个表达式的两边都用 填充/,即正则表达式的分隔符。它是 的缩写new RegExp('^[0-9()]+$')。