对象不支持 属性 或方法 'valid'
Object doesn't support property or method 'valid'
我的代码抛出以下错误:
Object doesn't support property or method 'valid'.
这是因为当前表单没有验证。那没问题。我只想提前检查是否可以将方法 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));
});
您的代码:
form.submit(function () {
if ($(this).valid())
onFormIsValid($(this));
else
onFormIsInvalid($(this));
});
这似乎是一种非常迂回的方式,是错误的做法。该插件会自动捕获点击并阻止提交,因此您的自定义 submit()
处理程序可能会发生冲突。
您可以使用内置的 submitHandler
和 invalidHandler
回调函数...那么您就不必担心如何调用 .valid()
,因为 submitHandler
仅在有效时触发,invalidHandler
仅在无效时触发。
演示 1:http://jsfiddle.net/9obe1b35/1/
如果您使用 ASP 内置的 Unobtrusive Validation 辅助插件,那么 .validate()
方法会自动构建,您不能将这些回调函数放入其中。相反,您可以将自定义 submitHandler
和 invalidHandler
函数放入 the jQuery.validator.setDefaults()
method.
演示 2(不显眼):http://jsfiddle.net/9obe1b35/2/
我的代码抛出以下错误:
Object doesn't support property or method 'valid'.
这是因为当前表单没有验证。那没问题。我只想提前检查是否可以将方法 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));
});
您的代码:
form.submit(function () {
if ($(this).valid())
onFormIsValid($(this));
else
onFormIsInvalid($(this));
});
这似乎是一种非常迂回的方式,是错误的做法。该插件会自动捕获点击并阻止提交,因此您的自定义 submit()
处理程序可能会发生冲突。
您可以使用内置的 submitHandler
和 invalidHandler
回调函数...那么您就不必担心如何调用 .valid()
,因为 submitHandler
仅在有效时触发,invalidHandler
仅在无效时触发。
演示 1:http://jsfiddle.net/9obe1b35/1/
如果您使用 ASP 内置的 Unobtrusive Validation 辅助插件,那么 .validate()
方法会自动构建,您不能将这些回调函数放入其中。相反,您可以将自定义 submitHandler
和 invalidHandler
函数放入 the jQuery.validator.setDefaults()
method.
演示 2(不显眼):http://jsfiddle.net/9obe1b35/2/