我知道主题行有很多类似的主题,所以我会直截了当地澄清我的问题。有一个简单的形式我正在验证,其中空字段的测试运行完美,并在跟随各种其他论坛帖子后,尝试实现数字或字母输入的测试,但功能根本不起作用。
以下是我工作的NotEmpty函数的片段:
function validateNotEmpty( input, id )
{
var errorDisplay = document.getElementById( id );
var notEmpty;
if ( input == "" ) // check if input is empty
{
errorDisplay.innerHTML = "This is a requiered field";
notEmpty = false; // update return value
} // end if
else
{
errorDisplay.innerHTML = ""; // clear the error area
notEmpty = true; // update return value
} // end else
return notEmpty; // return whether the input is empty
}// end function validateNotEmpty
以下是我的两个(不是数字/字母表测试人员):
function validateNotNumber(input, id)
{
var errorDisplay = document.getElementById( id );
var notNumber;
for (var i=0;i<input.value.length;i++){
temp=input.value.substring(i,i+1);
console.log(temp);
if (digits.indexOf(temp)==-1){
errorDisplay.innerHTML = "Sorry, this section can not have numbers";
notNumber = false;
}
else
{
errorDisplay.innerHTML = ""; // clear the error area
notEmpty = true; // update return value
} // end else
}
return notNumber;
}
function validateNotLetter(input, id)
{
var errorDisplay = document.getElementById( id );
var notLetter;
for (var i=0;i<input.value.length;i++){
temp=input.value.substring(i,i+1);
console.log(temp);
if (alphabets.indexOf(temp)==-1){
errorDisplay.innerHTML = "Sorry, this section can not have letter";
notLetter = false;
}
else
{
errorDisplay.innerHTML = ""; // clear the error area
notLetter = true; // update return value
} // end else
}
return notLetter;
}
除此之外,这就是我从我的表单调用javascript函数的方法:
<td width="135" valign="top">
<input size="15" type="text" name="Full_Name" value="" onblur = "validateNotNumber( this.value, 'nameError' )"/>
<p> <span id = "nameError" class = "errorMessage"></span> </p>
</td>
感谢任何帮助/指针,对JavaScript来说还是一个新手,所以围绕验证我的头脑已经非常复杂了。
答案 0 :(得分:1)
这是过于复杂的方式。你应该明确尝试一些正则表达式,例如
var alphanumeric = "someStringHere";
var myRegEx = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));
console.log(isValid);
或功能:
function isValid(str) {
var myRegEx = /[^a-z\d]/i;
return !(myRegEx.test(str));
}
答案 1 :(得分:1)
Fiddle帮助您入手。
我更新它基本上做你想要的,但使用正则表达式来检测数字,字母等。
其中一个样本:
function validateNotLetter(input, id) {
var errorDisplay = document.getElementById(id);
var value = input || '';
var letterRegex = /\D+/i;
var hasALetter = letterRegex.test(value);
if(hasALetter){
errorDisplay.innerHTML = "Sorry, this section can not have letter";;
}else{
errorDisplay.innerHTML = "";
}
return notLetter;
}
正则表达式是强大的。大量资源在线:
https://regex101.com/ - 测试正则表达式的位置
https://regexone.com/ - 学习的地方