【发布时间】:2014-09-05 13:37:40
【问题描述】:
我有一个表单,我正在使用 jQuery 验证插件在客户端进行验证。为简洁起见,我创建了一个简单的测试用例来显示我的问题。该表单有一个文本输入字段和一个隐藏输入字段。
<script>
function testThis() {
alert('value before: ' + $("#testhidden").val());
$("#testhidden").val("sometext");
alert('value after: ' + $("#testhidden").val());
}
</script>
<form name="testform" id="testform" method="post" action="">
Enter Text: <input type="text" id="testfield" title="test field is required" name="testfield" size="20" minlength="2" maxlength="10" required="required" />
<input type="hidden" id="testhidden" title="hidden field is required" name="testhidden" minlength="4" required="required" />
<p><input type="button" id="addvalue" name="addvalue" value="Add Value via JavaScript" onclick="testThis();" /></p>
<p><input type="submit" id="testbutton" name="testbutton" value="Submit Form" /></p>
</form>
验证这两个字段是必需的并且必须具有一定的长度;隐藏字段至少 4 个字符,文本字段至少 2-10 个字符。我需要注意的是,表单加载到 DOM 后,隐藏字段正在通过 JavaScript 更新。
我创建了a fiddle to demonstrate my problem。对于这个测试,我添加了一个按钮来模拟我如何通过 JavaScript 修改隐藏输入的值。要测试这样做:
- 尝试在不输入任何文本的情况下提交表单。您应该得到 2 个验证错误。
- 接下来在文本输入字段中输入文本,输入至少 2 个字符后,应隐藏第一条验证消息。
- 如果您此时尝试提交,由于隐藏字段要求,它仍然不会提交。
- 接下来单击通过 JavaScript 添加值按钮。我正在提醒之前和之后的值。此时,一旦隐藏字段具有正确的数据,我希望隐藏验证消息,但事实并非如此。
- 此时表单将提交,因为已满足验证条件但仍显示错误消息。
如何在隐藏字段包含适当的文本后隐藏验证消息?
这是我用来配合上面的测试表单的简单验证调用:
$("#testform").validate({errorElement:"div",ignore:[]});
如果重要的话,我使用的是 jQuery 1.11.1 和 jQuery Validate 1.12.0
更新
虽然 Pointy 的回答并没有解决问题,但我认为他正朝着正确的方向前进。我需要一些方法来触发在更新隐藏字段后触发验证。通过添加第二个输入文本字段,我现在拥有updated my fiddle。我还通过 JavaScript 更新这个输入字段。当我通过 JavaScript 更新后在这个新字段上触发 blur() 事件时,它正确地隐藏了验证消息。但是在隐藏字段上做同样的事情仍然不起作用。它肯定与它是一个隐藏的领域有关......
【问题讨论】:
标签: javascript jquery jquery-validate