HTML Javascript, .click () ->. Submit () и .submit () возвращают разные результаты - PullRequest
4 голосов
/ 23 марта 2011

У меня есть форма, в которой кнопка отправляется с использованием события 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.

Ответы [ 2 ]

3 голосов
/ 23 марта 2011

Это потому, что у вас есть ошибка в 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 кнопки, а не ее имя.

2 голосов
/ 23 марта 2011

Я только что запутался с этим, и мне кажется, что следующее работает.

<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, на случай, если с тем, что я здесь предоставил, возникнут какие-то причудливые глупости.

Удачи в любом случае!

...