【发布时间】:2014-03-18 10:11:04
【问题描述】:
我有一个 HTML 表单,其中包含一个表格,其中包含一个带有复选框和一个输入文本字段的两列(除其他外)。用户首先选中复选框,然后修改输入文本字段中的值。在提交此表单之前,我想验证用户输入。
我实现了这个验证功能:
<script type="text/javascript" charset="utf-8">
var error = false;
$('#form-id').submit(function (event) {
var pattern = /^[0-9]+$/;
alert(pattern); // 1st
var error = false;
$('#form-id input[type=checkbox]').each(function () {
var sThisVal = (this.checked ? $(this).val() : "");
if(sThisVal === 'on') {
var field = $(this).closest('td').siblings()
.find("input[type=text]")[0];
var value = field.value;
alert(value); // 2nd
var ok = pattern.test(value);
alert(ok); // 3rd
if( ! ok) {
error = true;
field.addClass('red-border');
} // if on ok
} // if checked
}); // foreach checkbox
return ! error;
});
在第三次警报之前一切正常。然后它在addClass 上失败并显示以下消息:
TypeError: 'undefined' is not a function
(evaluating 'field.addClass('red-border')')
所以字段是undefined,但是当我读取它的值时没问题。
我根本不是 Javascript 或 JQuery 方面的专家,但在阅读了文档后我不明白为什么会发生这种情况。
【问题讨论】:
-
警报(值);它返回什么?
-
它显示了正确的值,即我期望读取的值。这就是为什么我说它工作正常。
标签: javascript jquery forms validation