Jquery 提交和单击之间的差异
看看这个:Jquery 提交和单击之间的差异,jquery,forms,button,submit,this,Jquery,Forms,Button,Submit,This,看看这个: $('form).submit(function (event) { $(':input.required').trigger('blur'); var num = $('.warning', this).length; alert(num);//Focus here! if (num) { event.preventDefault(); }; }); 如果有5个必填文
$('form).submit(function (event) {
$(':input.required').trigger('blur');
var num = $('.warning', this).length;
alert(num);//Focus here!
if (num) {
event.preventDefault();
};
});
如果有5个必填文本框为空,那么当单击submit按钮[ID:button1]时,num为5。触发5个文本框后,发现5个错误,代码运行良好
同样的按钮[ID:button1]
$('#button1').click(function (event) {
$(':input.required').trigger('blur');
var num = $('.warning', this).length;
alert(num); //Focus here!
if (num) {
event.preventDefault();
};
});
在本例中,num为0。似乎触发功能没有很好地或及时地工作
有人能告诉我为什么吗?
多谢各位 我相信这是对“这个”的引用。这是JavaScript和许多其他语言中的一个重要特性。当您在第一个示例中使用它时,它正在表单(this)中搜索具有“warning”类的子元素。在第二个示例中,它在按钮中搜索子元素。你可以用
var num = $('.warning').length;
查找该类页面上的所有元素。如果您需要将查找限制为您的表单的子级,请尝试
var num = $('form#myformid').find('.warning').length;
您的第一个示例,附加到表单的提交操作,应该足够了。单击该按钮将导致提交事件,因此第二个事件处理程序是多余的(如果用户通过在字段中按enter键提交表单,则不会触发该事件处理程序)。在您的示例2中,此
的上下文不同:
var num = $('.warning', this).length;
按钮内部没有警告元素,因此在第二个示例中计数为0
最好在两个地方都使用此选项进行直接比较:
var num = $('form .warning').length;
在第二段代码中,您正在调用
$(':input.required').trigger('blur');
在你的按钮上(#按钮1)。您应该引用您的表单,因为现在它正在该按钮内查找输入