1

我有一个需要验证的表单,决定与平时有所不同,并让主函数调用较小的函数,如下所示

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 是不可能的。

4

2 回答 2

1

我建议document.getElementById改用:

function validate_empty(formField) {
    if ( document.getElementById(formField).value.length == 0 ) {
        //Do Stuff
    }
}
于 2013-04-05T11:51:10.480 回答
1

您的代码看起来的方式,JS 是对名为 的变量进行范围扫描formName,或者无论表单的名称实际上是什么......您应该指定它是一个 DOM 元素:document.forms[0]或类似的。

即便如此,您if将始终评估为 true,因为您是在分配,而不是比较:

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 恕我直言,最好用作事件驱动的函数式编程语言。
因此,即使这不是严格相关的 ATM,请考虑研究 JS 的优势......这是一种简洁的小语言,不应该受到这种滥用。

于 2013-04-05T12:01:03.213 回答