使用$('#SomeFormId')
将不起作用,因为当您这样做时:
$('#SomeFormId').valid = false;
然后当您submit
再次使用(我假设的)在表单处理程序中访问它时:
var form = $('#SomeFormId'); // or $(this)
if (form.valid) {
//
}
您实际上是在创建两个不同的对象,即使它们指的是同一个 DOM 元素。所以设置valid = true
一个不会在第二个更新它。
您提供的代码非常简单,所以我假设您的验证与您的submit
处理程序是分开的(因为它blur
无论如何都是),所以您可以做的是使用类似.data()
或标志的东西(只要确保它在上下文中) .
// on blur
$('#SomeFormId').data('isvalid', false); // invalid
// on submit
var isvalid = $('#SomeFormId').data('isvalid');
if (!isvalid) {
// invalid form
ev.preventDefault();
}
编辑
jQuery 事件对象
当您在 jQuery 中将函数绑定为事件处理程序时,jQuery 默默为您做的一件事就是它为您“创建”了一个规范化的 Event 对象。这将包含有关您可以在处理程序中使用的事件的信息,并且还允许您以某些方式控制事件的行为。
// setting a submit event on my form
// | whatever you put here
// V is the event object.
$('#SomeFormId').on('submit', function (ev) {
// preventing the default action
// : in a form, this prevents the submit
ev.preventDefault();
});