Форма с большим количеством отправлений и отправки по Enter - PullRequest
0 голосов
/ 26 января 2011

Этот вопрос чем-то похож на этот .

У меня есть форма в моем решении для электронной коммерции. Когда вы вставляете что-то в корзину, вы можете изменить количество товаров. Тележка целиком в одной форме. Форма имеет две кнопки отправки - recalcualte и продолжить (что приведет покупателя к шагу 2 процесса).


Когда пользователь изменяет количество элементов, используя входные данные, он может либо нажать кнопку «Пересчитать» (которая отправляет сообщение в приложение, которое изменит числа в сеансе / дБ), либо продолжить (который также отправит данные записи для пересчета, а затем принять пользователь на шаге 2).

Но когда пользователь нажимает клавишу ввода, кнопка пересчета имеет приоритет.

Я хочу, чтобы кнопка пересчета отправляла форму, но ТОЛЬКО при нажатии, а НЕ при отправке при нажатии клавиши ввода. В отличие от этого кнопка «продолжить» должна работать и с вводом.

Решение НЕ ДОЛЖНО использовать javascript, так как интерфейс должен использоваться без JS.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 26 января 2011

Поместите кнопку с приоритетом в исходный код HTML и используйте разметку, чтобы инвертировать положение двух кнопок?

Редактировать: вы говорите, что ваш макет не может справиться с этим.

Либо: 1. Измените макет. Функциональность важнее, и для верстки существует более одного способа сделать это. 2. Имейте в виду, что форма не проверяет, была ли нажата кнопка «пересчитать» или «отправить», а скорее, если указанная цена была правильной с рассчитанным призом. Пример:

Пользователь покупает 1 товар на сумму 3 доллара. Пользователь покупает 2 товара, стоимостью 5 долларов. Общий выигрыш: 13 долл.

Пользователь теперь меняет 1 элемент на 4 элемента. 3 доллара становятся 12 долларами, но он не попал в пересчет.

В вашей форме есть поле, в котором отображается общая сумма (скрытое поле - самое приятное). Когда пользователь отправит форму, повторите расчет. Если рассчитанный приз равен призу в скрытом поле, пользователь знал окончательный правильный приз. Если это не так, повторно отправьте форму с надписью «Вы изменили свою корзину, общая сумма выигрыша была обновлена ​​с учетом этих изменений. Проверьте сумму и подтвердите покупку» или что-то в этом роде.

0 голосов
/ 26 января 2011

Вы должны быть в состоянии решить, что на стороне сервера. При нажатии кнопки передается пара имя-значение, но при нажатии return это не так. Поэтому измените ваш серверный скрипт, чтобы он выполнял «пересчет» при отправке пересчитанного значения имени и продолжал во всех других случаях.

0 голосов
/ 26 января 2011
<input type="text" id="mytext" ... />
<script type="text/javascript">
document.getElementById("mytext").onkeyup = function(event) {
  if(event.keyCode=='13' || event.keyCode=='10') {
    alert('you pressed enter');
    // do whatever you want when enter is detected
  }
}
</script>
...