我有一些表单验证码似乎无法正常工作,我无法弄清楚原因。
function isTextFieldEmpty(textField){
//return true or false depending on whether or not there is any text in the field
console.log("Checking to see if the current field is empty...");
var val = textField.value; //val is the text from the current field
console.log("The current value of 'val' is: " + val);
if(val.length < 1){
return true;
}else{
return false;
}
}
我得到的错误是:“Uncaught TypeError:无法读取未定义的属性'长度'。果然,我的控制台日志说'val'的值是 undefined 。
我确定我错过了一些东西,但我还在学习JS并且无法弄清楚它是什么。有什么建议吗?
编辑:这是我传递给函数的内容:
var uName = document.getElementById("unionname");
var noUnionName = isTextFieldEmpty(uName);
'unionname'是我正在尝试验证的texfield的id。这是相关的HTML:
<div class="formBox">
<label for="unionname">Union Name</label>
<input type="text" name="unionname" id="unionname" value="" class="wide"/>
<span class="feedback good">Sample good message</span>
</div>
答案 0 :(得分:0)
您在该功能中本地声明var val
。尝试通过将其置于脚本的顶部来全局声明它;不需要设置它,只需声明它。
答案 1 :(得分:0)
我已经开始工作了。似乎验证功能很好;问题出在我的称呼方式上。
window.onload = justDoIt;
function justDoIt() {
var uName = document.getElementById("unionname");
uName.onblur = function(){
clearMessages(uName); // clear out old feedback for this field
var noUnionName = isTextFieldEmpty(uName);
这就是我最终调用该函数的方式。
具有讽刺意味的是,似乎我从前一个例子中遗漏的错误的.onblur代码可能是我的问题的原因。但我真的不确定。