我有一个很小的HTML文件:
<html>
<head></head>
<body>
<form id='MyForm'>
<input type='text' required />
<input type='submit' />
</form>
<script src="/js/jquery-1.9.0.js"></script>
<script src="/js/jquery.validate.js"></script>
<script>
var validator = $("#MyForm").validate();
alert(validator.form());
</script>
</body>
</html>
这会用"false“警告我,这是预期的行为。
当我使用js-test-driver进行单元测试时,问题就来了:
TestCase("MyTests", {
setUp: function() {
this.myform = "<form id='MyForm'><input type='text' required /><input type='submit' /></form>";
this.validator = $(this.myform).validate();
jstestdriver.console.log("Does the form validate? " + this.validator.form());
},
test_empty: function() {
},
});
这段代码返回给我字符串
表单是否有效?真的
当然,这是我的项目的简化版本,但重点是我似乎无法对正在开发的验证模块进行单元测试,因为jQuery验证插件似乎无法工作。我遗漏了什么?
发布于 2017-05-08 10:06:49
正如Enrique提到的,问题与jQuery的:hidden
选择器有关。
修复:
$.validator.setDefaults({ ignore: "" });
var validator = $("#MyForm").validate();
alert($("#MyForm").valid());
发布于 2013-06-25 11:36:18
我找到了!显然,插件bz默认忽略了".hidden“输入。就像jQuery医生说的,
Elements can be considered hidden for several reasons:
- They have a CSS display value of none.
- They are form elements with type="hidden".
- Their width and height are explicitly set to 0.
- An ancestor element is hidden, so the element is not shown on the page.
因为单元测试是无浏览器的,所以输入元素满足这个要求,因此被验证插件忽略!
=)
发布于 2013-06-24 18:45:23
尝试使用.valid()
,这是触发测试的正确方式,并获得一个表示表单有效性的布尔值。
<script>
var validator = $("#MyForm").validate();
alert($("#MyForm").valid());
</script>
////
this.validator = $(this.myform).validate();
jstestdriver.console.log("Does the form validate? " + $(this.myform).valid());
https://stackoverflow.com/questions/17280180
复制相似问题