我有一个使用onClick事件提交按钮的表单。
<input type="button" name="couponButton" id="orderNow" value="Apply" onKeyUp="javascript:return false;" onClick="javascript:document.cartFrm.submit();" />"
此外,当输入处于焦点时按下回车键时,我有一个触发couponButton
的输入。
<INPUT type=text id=coupon name=coupon size=6 value="" onKeyUp="javascript:(event.keyCode == 13)?document.couponButton.click():''}">
虽然它们都触发相同的事件(.submit()
),但结果却不同。当您单击该按钮时,表单的实际提交输入不包含在$ _POST中。当您按下回车键触发按钮时,表单的实际提交输入包含在$ _POST中。
答案 0 :(得分:3)
那是因为你在onkeyup
中有错误并且触发了 Enter 键的默认行为:使用第一个提交按钮提交表单,就像你点击它一样。 / p>
正确的代码可能是:
<input type="text" id="coupon" name="coupon" size="6" value="" onKeyUp="return AutoClick(event, 'orderNow');" />
功能如下:
function AutoClick(event, id) {
event = event || window.event;
var keyCode = event.keyCode || event.which;
if (keyCode == 13) {
var button = document.getElementById(id);
if (button)
button.click();
return false;
}
return true;
}
请注意,我使用的是按钮的id
,而不是名称。
答案 1 :(得分:2)
我只是搞砸了这一点,以下似乎有用。
<form action='#' name='cartFrm' method="get">
<input type='hidden' name='test' value='testing' />
<input type="button" name="couponButton" id="orderNow" value="Apply" onKeyUp="javascript:return false;" onClick="javascript:document.cartFrm.submit();" />
<input type=text id=coupon name=coupon size=6 value="" onKeyUp="javascript:if(event.keyCode == 13){document.cartFrm.couponButton.click();}else{return false;}" />
</form>
我更改了优惠券上的onKeyUp
javascript:if(event.keyCode == 13){document.cartFrm.couponButton.click();}else{return false;}
而不是
javascript:(event.keyCode == 13)?document.couponButton.click():''}
...根据您的原文,虽然我认为document.cartFrm.couponButton.click();
代替document.couponButton.click()
的位可能是我所做的最相关的更改。
哦,我用html5 doctype做了这件事,以防万一我在这里提供的内容有任何怪癖。
祝你好运!