2013-07-13 32 views
1

为什么我不能在下面的例子中触发提交按钮的最接近的形式?为什么我不能触发提交按钮的最接近的形式?

HTML,

<form name="input" action="html_form_action.asp" method="get"> 
Username: <input type="text" name="user"> 
<input type="submit" value="Submit"> 
</form> 

jQuery的,

$('input[type=submit]').click(function(){ 

    $(this).closest('form').unbind('submit').submit(function(){ 
      alert("hello world"); 
     return false; 
    }); 
    return false; 
}); 

我应该得到的警告信息,但我不能。我做错了什么?

jsfiddle

回答

2

哇,这是一个很大冒泡事件......

你回头率虚假和有约束力和unbiding事件.. ,这是行不通的,但你可以简单的改变你的submit按钮正常button,例如:

<form name="input" action="html_form_action.asp" method="get"> 
    Username: <input type="text" name="user" /> 
    <input type="button" value="Submit" class="btn-submit" /> 
</form> 

,写

$(".btn-submit").click(function() { 
    $(this).prop("disabled", true); // dont allow more clicks 
    alert('about to submit...'); 
    $(this).closest("form").submit(); 
    alert('done!'); 
}); 

DEMO在JsBinhttp://jsbin.com/elokov/1/


与Ajax调用提交表单

$(".btn-submit").click(function(evt) { 
    $(this).prop("disabled", true); // dont allow more clicks 
    alert('about to submit...'); 

    var frm = $(this).closest("form"); // our form 

    $.ajax(
     type: frm.attr("method"), 
     url: frm.attr("action"), 
     data: frm.serialize(), 
     success: function(data) { 
      alert('all went well'); 
     }, 
     success: function(jqXHR, textStatus) { 
      alert('err, something messed up! ' + textStatus); 
     } 
    ); 

    return false; // or use evt.preventDefault(); 
}); 
+0

谢谢。我需要处理表单的数据并通过'$ .ajax'发送,那么我怎样才能把'$ .ajax'放进去呢? – laukok

+0

通过ajax调用发送表单?当然,这很简单:更新我的答案。 – balexandre

+0

谢谢,但很抱歉 - 无法看到您的更新! :( – laukok

0

因为你的代码只是绑定提交事件但是并不触发提交事件。如果你只是想阻止提交表单,并改变那么这应该足够

$('input[type=submit]').click(function (e) { 
    alert("hello world"); 
    return false; 
}); 
+0

我怎么触发它呢?我需要'submit'中的提示信息。 – laukok

+0

你为什么不直接设置表单? –

+0

我在页面上有很多表单,所以我想从提交点击触发最接近的表单。是否有意义?谢谢。 – laukok

相关问题