2013-11-27 105 views
1

数据录入人员将电子邮件地址放入表单中,如果每次粘贴地址时提交表单,以便为下一次粘贴做好准备,这将会很有帮助。 setTimeout中的其他代码也可以正常工作 - 只是不提交表单。在此先感谢您的帮助。jQuery:粘贴提交表格

$("#email").on("paste", function(){ 
    setTimeout(function() { 
     $("#cancelemail").submit(); 
    }, 0); 
}); 


<form action="done.php" method="post" id="cancelemail"> 

Address to be removed: <input id="email" name="email" type="text" /> 

<input type="submit" name="submit" value="Remove"> 

</form> 
+0

@JPod jQuery有一个 '粘贴' 事件 –

+1

而不是用'贴 - >浏览器提交 - >重装page'逻辑,你会觉得它更友好使用这个逻辑? '粘贴 - > AJAX提交 - >清除输入 - >保持对输入的重点 - >在输入框下方显示小的成功/错误消息' – MonkeyZeus

+0

设置超时0是否可能太快?如果将设置的超时时间缩短到一秒,会发生什么情况? – jonnybot

回答

2

真奇怪,触发提交似乎并没有为我工作,除非我删除从HTML提交按钮,但触发提交按钮实际上并?

$("#email").on("paste", function() { 
    setTimeout(function() { 
     $('[name=submit]').trigger('click') 
    }); 
}); 

Fiddle with button, triggering submit -> not working ?
Fiddle without button, triggering submit -> works
Fiddle with button, triggering button click -> works

+0

http://stackoverflow.com/a/12541054/1414562解释它 –

+0

@ A.沃尔夫 - 感谢您的链接,现在我已经读了,我意识到我已经知道,但只是不能我的生活找出它为什么不会屈服,现在看起来很明显。这是我从来没有做过的那些错误之一,而且你不会经常看到它,但是命名一个元素“submit”确实会覆盖附加在表单上的本地提交函数。 – adeneo

+0

@ A.Wolff:您的评论与我的原始代码完全相同。感谢您带领我们在那里。 –