首页 文章

HTML Javascript,.click() - > . submit()和.submit()返回不同的结果

提问于
浏览
4

我有一个表单,其中一个按钮使用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() ),但结果却不同 . 当您单击按钮时,表单's actual submit input is not included in $_POST. While when you press the enter key to trigger the button the form'的实际提交输入包含在$ _POST中 .

2 回答

  • 3

    我只是搞砸了这个,我认为以下似乎有效 .

    <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做了这个,以防万一我在这里提供的任何怪癖skulduggery .

    祝你好运!

  • 2

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

    正确的代码可能是:

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

相关问题