使用jQueryvalidation器的valid()或element()方法与远程方法
jQuery validator valid()
方法( http://jqueryvalidation.org/valid )检查所选表单是否有效或所有选定元素是否有效。
jQuery validator element()
方法( http://jqueryvalidation.org/Validator.element/ )validation单个元素,如果有效则返回true,否则返回false。
但是,使用远程方法时,第一次检查表单时,两种方法都错误地指示元素通过validation。
如何使用valid()
或element()
与远程validation方法?
https://stackoverflow.com/a/3884995/1032531提供了一个解决方案,但它与当前版本的jQuery Validator无法正常工作。 在异步调用运行时, element()
不再返回undefined
,因为this.check( checkElement ) !== false
(v1.13.1的第423行)只返回true
或false
。 因此,可以任意暂停100毫秒,但不检查这是否是正确的时间量。
顺便说一句,我提出这个问题的原因是我希望使用jQueryValidator进行内联编辑。 https://jsfiddle.net/vctt9utd/显示除远程方法之外的工作示例。
Testing $(function(){ var validator=$("#myForm").validate({ rules: { bla: { minlength:2, maxlength:4, required:true, remote: "validate.php" } }, messages: { bla: { remote:"error message" } } }); $('#testit').click(function(){ $('#bla').val('test'); console.log($('#bla').valid()); console.log(validator.element('#bla')); }) });
有点黑客,但它似乎工作。 我不喜欢它如何启动两个ajax请求。 我想我可以动态更改规则以从validation器规则中删除远程方法,但是,我需要手动添加消息。 从技术上来说,我的应用程序,我不需要显示消息,但我使用return input.next().html();
获取https://jsfiddle.net/vctt9utd/中显示的消息。
var validator = $("#myForm").validate({ rules: { myelement: { minlength: 2, maxlength: 4, required: true, remote: { url: "/echo/html/", type: "POST", data: { html: 0, delay: .5 } } } }, messages: { myelement: { remote: "error message" } } }); $('#testit').click(function () { if ($('#myelement').valid()) { $.post("/echo/html/", { html: 0, delay: .5 }, function (status) { if(!+status){alert('failed remote validation');} }); } else {alert('failed normal validation if first attempt, otherwise could be either.');} })
- jQuery选择器模拟:starts-with或:ends-with用于搜索文本?
- XMLHttpRequest无法加载 – 文件footer.html,“错误:无法在’XMLHttpRequest’上执行’send’
- hover时的语义Ui下拉列表
- 如何将嵌套表添加到datatable?
- Jqgrid multiselect选择的行数是多少?
- noscript是否被启用javascript的浏览器确认?
- 自定义XMLHttpRequest.prototype.open
- Javascript:如何根据项属性值删除数组项(JSON对象)?
- Bootstrap datepicker – 如何以其他格式获取toDisplay,以及其他格式的toValue