我有一个需要验证的表单,决定与平时有点不同,并且主函数调用较小的函数,如此
function validate() {
validate_this(*fieldId*);
validate_that(*fieldId*);
...
}
其中较小的函数是这样的:
function validate_empty(formField) {
if ( formName.formField.value.length = 0; ) {
//Do Stuff
}
}
其中formField
是表单中的字段ID。
但是这会导致formName.formField.value.length
Uncaught TypeError: Cannot read property 'value' of undefined
如何通过而不是字符串或null来解析实际的fieldId? jQuery是不可能的。
答案 0 :(得分:1)
我建议改为使用document.getElementById
:
function validate_empty(formField) {
if ( document.getElementById(formField).value.length == 0 ) {
//Do Stuff
}
}
答案 1 :(得分:1)
代码的外观,JS是范围扫描一个名为formName
的变量,或者实际上是什么形式的名称......你应该指定它是一个DOM元素:document.forms[0]
或类似的
即便如此,您的if
也会始终评估为真,因为您要分配,而不是比较:
var foo = 0;//single = : assignment operator
console.log(foo == '0');//true, loose comparison (type coerced)
console.log(foo === '0');//false, strict comp: type && value
除此之外,您验证表单的方式是高度可疑......您似乎正在使用JS,就好像它是C语言之类的东西。 JS IMHO最适合用作事件驱动的函数式编程语言。
所以即使这不是严格相关的ATM,请考虑研究JS的优势......这是一个简洁的小语言,不值得这种滥用。