我正在使用asp.net MVC,当我提交表单时,之前的开发人员嵌入了一些jQuery验证。
$('form').submit(function() {
...code done here to validate form fields
});
问题是表单上的“保存”和“取消”按钮都会触发此提交jQuery函数。如果触发“取消”输入按钮,我不想激活验证逻辑(id =“cancel”name =“cancel”value =“cancel”)。 有没有办法在这个提交函数中,我可以检索按下哪个输入按钮提交表单的ID,名称或值?
答案 0 :(得分:8)
我问了同样的问题:How can I get the button that caused the submit from the form submit event?
我能想到的唯一跨浏览器解决方案是:
$(document).ready(function() {
$("form").submit(function() {
var val = $("input[type=submit][clicked=true]").val()
// DO WORK
});
$("form input[type=submit]").click(function() {
$("input[type=submit]", $(this).parents("form")).removeAttr("clicked");
$(this).attr("clicked", "true");
});
不确定您是否正在寻找答案,但您应将“取消”按钮更改为锚标记。除非您正在处理表单值,否则无需提交取消。
答案 1 :(得分:0)
如果输入按钮的type
是这样的话,这只会触发:
<input type='submit' ...
所以请确保取消按钮没有type='submit'
并且它应该可以正常工作
答案 2 :(得分:0)
var myForm = $('form');
$('input[type="submit"]',myForm).click(function(e) {
var whoClickedsubmit = $(e.target); //further, you can use .attr('id')
//do other things here
});
修改强>
.submit(function(event){
var target = event.originalEvent.explicitOriginalTarget.value;
//But IE does not have the "explicitOriginalTarget" property
});
答案 3 :(得分:0)
修改强>
这只适用于FF,而不适用于Chrome(我想,不是在其他基于WebKit的浏览器中),所以我只是将此作为浏览器特定的解决方法,这是一个有趣的注释,但不是作为答案
@ Neal建议不要使用提交类型的取消按钮可能是最干净的方式。但是,如果你必须按照现在的方式进行:
$('form').submit(function(e){
if(e.originalEvent.explicitOriginalTarget.id === 'cancel'){
//don't validate
}
else{
//validate
}
});