我有一个包含多个小表单的页面。每个表单都有一个输入字段,它具有一个onchange函数,将它的形式提交给返回无数据状态的url。当用户单击另一个表单中的按钮时,带有onchange的输入字段无法触发
事情工作正常,在表单之后发送表单,直到用户点击一个只有一个提交按钮的小表单。这个点击工作,但放弃在前一个领域的变化,导致其onchange不发射更改功能的底部点击失败(仍试图了解萤火虫跟踪)。
发生了什么事?有没有解决我的结构?
UPDATE:
开始我尝试简单地推迟其提交的动作,但没有运气。
我已经隐藏并添加了一个“事件”链,以便重点有一个地方可以在真正的提交尝试发生之前休息 - 下面的代码已更新。所以现在的问题变成:
这是否如此简单?
脚本:
$(function() {
$('input,select').change(changed);
});
function changed(){
...
$(this).parents('form').find(':submit').click();
}
function doSubmit(elt, id)
{
$(elt).focus();
setTimeout(function(){
$(id).click();
}, 400);
}
一个可以小形式:
<form class="clean" method="POST" action="QuoteProApp.php">
<input type="submit" value="field" name="btn_update" style="display: none;">
<input type="hidden" value="000242" name="quote_id">
<input type="text" maxlength="15" size="3" value="" name="q[cost][4][1][unit]">
</form>
的违规点击进入这种形式:
<form class="clean" method="POST" action="QuoteProApp.php">
<input type="hidden" value="000242" name="quote_id">
<input type='button' name='btn_close' value='Close' onclick='doSubmit(this,"#CLOSE");'>
<input id='CLOSE' type='submit' name='btn_close' value='Close' style='display:none;'>
</form>
是否因为浏览器不想一次提交两个表单,所以提交按钮的结果优先? – nnnnnn 2013-05-02 23:55:42
我试过这个,无法复制它(在Firefox中,jQuery 1.8.3)。你能更清楚地了解bug是如何被再现的?例如,当你在一个字段中输入文本时会发生什么,并且在输入形式A的最后一个文本字母之后的下一个动作是单击表单X中的提交按钮?请在你的问题中澄清这一点。 – BobS 2013-05-03 00:04:54
考虑到两个提交按钮,我添加了一个按钮中间步骤,似乎已经工作(问题更新为进一步照明。) – Don 2013-05-03 14:46:27