2011-03-23 31 views
3

我有一个表单,其中使用onClick事件提交按钮。HTML Javascript,.click() - >。submit()和.submit()返回不同的结果

<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。

回答

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文档类型做了这个,以防万一有任何怪癖我会在这里提供。

无论如何,祝你好运!

3

这是因为您在onkeyup中存在错误,并且的默认行为输入键被触发:使用第一个提交按钮提交表单,就像您单击它一样。

正确的代码可能是:

<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,而不是它的名称。