2011-03-23 61 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,而不是它的名稱。