【问题标题】:HTML Javascript, .click()->.submit() and .submit() returning different resultsHTML Javascript,.click()->.submit() 和 .submit() 返回不同的结果
【发布时间】:2011-07-21 09:28:51
【问题描述】:

我有一个使用 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 中。

【问题讨论】:

    标签: javascript html button click submit


    【解决方案1】:

    我只是搞砸了,我认为以下似乎可行。

    <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 做的,以防万一我在这里提供的东西有什么怪癖。

    祝你好运!

    【讨论】:

      【解决方案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,而不是其名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 2013-10-25
        • 2017-04-06
        • 1970-01-01
        相关资源
        最近更新 更多