Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取如何在提交事件中提交表单_Javascript_Jquery_Jquery Forms Plugin - Fatal编程技术网

Javascript 获取如何在提交事件中提交表单

Javascript 获取如何在提交事件中提交表单,javascript,jquery,jquery-forms-plugin,Javascript,Jquery,Jquery Forms Plugin,我有一个表单,上面有几个按钮。其中两个按钮使用ajax提交表单并将其清除,以便用户可以在继续之前添加多个记录。最后一个按钮用于用户完成页面并希望转到下一页时。在jQuery的.submit()方法中是否可以告诉表单是如何提交的(点击回车键,或者点击按钮的对象)?不确定这是否是最佳实践,但我发现,如果我创建一个提交事件处理程序,然后再为其他按钮创建处理程序,它似乎可以正常工作,至少在Chrome中是这样 这里有一个例子 $(function(){ $('form#frmField').su

我有一个表单,上面有几个按钮。其中两个按钮使用ajax提交表单并将其清除,以便用户可以在继续之前添加多个记录。最后一个按钮用于用户完成页面并希望转到下一页时。在jQuery的.submit()方法中是否可以告诉表单是如何提交的(点击回车键,或者点击按钮的对象)?

不确定这是否是最佳实践,但我发现,如果我创建一个提交事件处理程序,然后再为其他按钮创建处理程序,它似乎可以正常工作,至少在Chrome中是这样

这里有一个例子

$(function(){
    $('form#frmField').submit(function(evt){
        alert('Form Submitted');
        return false;
    });

    $('input#btnReset').click(function(){
        alert('Form Reset');
        return false;
    });
});

可以为按钮定义onclick事件处理程序,将状态保存到某个全局范围变量中。然后在onsubmit处理程序中检查变量的状态

您可以这样尝试:

HTML:





发送3
JS:

$('#myform').bind('submit',函数(事件,发件人){
如果(从)
$('#data').append(“from:”+$(from).attr('id')+”
); 返回false; }); $('#myform')。按键(函数(事件){ 如果(event.which=='13'){ event.preventDefault();//preventDefault不会停止事件通过DOM的进一步传播。应使用event.stopPropagation进行此操作。 event.stopPropagation(); $(this.trigger('submit',[this]); 返回false; } }); $('.button submit').bind('click',函数(事件){ event.stopPropagation(); $('#myform')。触发器('submit',[this]); 返回false; });

jQuery事件通过调用传递。您可以使用此事件对象来确定事件的调用方式

具体来说,如果在函数中将其作为参数
e
传递,则可以选中
e.type
,该参数应等于
单击
,或
e.which
,如果使用enter键提交,则该参数应为13

您可以使用
target
找出哪个DOM元素使用
e.target
发起了提交

所以

}))

<form id="myform">
    <input type="text" id="text1" name="text1" /><br />
    <input type="button" class="button-submit" id="b1" name="b1" value="send 1" /><br />
    <input type="button" class="button-submit" id="b2" name="b2" value="send 2" /><br />
    <button class="button-submit" id="b3">send 3</button>
</form>

<br />
<div id="data"></div>
$('#myform').bind('submit', function(event, from) {

    if(from)    
       $('#data').append("from :" + $(from).attr('id') + '<br />');

    return false;

});

$('#myform').keypress(function(event) {

  if (event.which == '13') {
     event.preventDefault(); //preventDefault doesn't stop further propagation of the event through the DOM. event.stopPropagation should be used for that.
     event.stopPropagation();
     $(this).trigger('submit', [this]); 
     return false; 
  }

});

$('.button-submit').bind('click', function(event) { 
    event.stopPropagation();
    $('#myform').trigger('submit', [this]); 
    return false; 
});
jQuery('#foo').click(function(e){
var initiator = $(e.target); //jQuery object for the DOM element that initiated the submit
if(e.type==="click")
{
//is a click
}
else if(e.which==="13")
{
//is an 'enter' triggered submission
}
});