【发布时间】:2017-04-15 09:59:44
【问题描述】:
我的代码抛出以下错误:
对象不支持“有效”属性或方法。
这是因为当前表单没有验证。那没问题。我想要的只是提前检查我是否可以将方法valid 应用于当前表单以避免烦人的JavaScript 错误。
这就是我想要的。例如。 if(form.isValidatable()) form.valid()
代码没有问题。我只需要知道调用方法或属性是否会引发异常。
form.submit(function () {
if ($(this).valid())
onFormIsValid($(this));
else
onFormIsInvalid($(this));
});
更新:我是 jquery 的新手,感谢您的帮助!!!!!!我要做的是在提交之前和验证之后禁用所有输入。我没有设法让 submitHandler 被调用,而且真的很难理解为什么。这就是我做这个解决方案的原因。看我的代码。我该如何改进?
我想将它应用于我的解决方案中的所有表单......
$(document).ready(function () {
var form = $("form");
form.bind('invalid-form.validate', function() {
onFormIsInvalid($(this));
});
form.submit(function () {
if ($(this).valid())
onFormIsValid($(this));
else
onFormIsInvalid($(this));
});
});
function onFormIsValid(form) {
$("input", form).prop("readonly", "readonly");
$("input[type=submit]", form).prop("disabled", true);
$("input[type=submit]", form).each(function () {
$(this).data("val", $(this).val());
});
$("input[type=submit]", form).val("Processing...");
}
function onFormIsInvalid(form) {
$("input", form).prop("readonly", null);
$("input[type=submit]", form).prop("disabled", false);
$("input[type=submit]", form).each(function () {
$(this).val($(this).data("val"));
});
}
另一方面,如果我执行以下操作,则根本不会调用提交处理程序。没有错误,没有线索,什么都没有。我放置了一个断点,就像处理程序不存在一样。
form.validate({
submitHandler: function () {
onFormIsValid($(this));
}
});
form.bind('invalid-form.validate', function() {
onFormIsInvalid($(this));
});
【问题讨论】:
-
if (!$.validator) { return; }? -
@StephenMuecke,
if (!$.validator)只会告诉你插件已加载,对吧?我认为 OP 想知道是否已使用.validate()初始化某个特定表单以进行验证。 -
@Sparky,这就是
?的原因 :) - 不知道我理解 OP 想要什么 -
@StephenMuecke,是的,他的要求似乎是一种非常迂回的做事方式。
-
引用 OP:“我要做的是在提交之前和验证之后禁用所有输入。” ~ 使用
submitHandler!
标签: jquery asp.net-mvc jquery-validate