Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как побороть форму? (https://javascript.ru/forum/dom-window/77575-kak-poborot-formu.html)

Янковиц 22.05.2019 11:41

Как побороть форму?
 
Добрый день. Прошу помощи.
Есть форма с группой радиокнопок. Нужно отправить форму при клике по радиокнопке. Проблема в том, что нужно отработать 2 клика по радиокнопке.
Если пишу так:
jQuery('.input type="radio"').click(function() {
	// отправляю форму
});

Результат get запроса при первом клике: http://site.ru/?orderby=ASC
при втором - http://site.ru/?sort=_price&orderby=ASC (то есть первый клик не получает значения sort=_price)

Если пишу так:
jQuery('#forma').change(function() {
	// отправляю форму
});

Когда второй раз кликаю по радиокнопке, отправки формы нет.
Я в печали.

рони 22.05.2019 12:00

Янковиц,
jQuery("input:radio").click(function() {
var n = jQuery( "input:radio:checked" ).length;
if(n == 2)  // отправляю форму


});

Янковиц 22.05.2019 12:15

Спасибо, но это не решает проблему, так как пользователь должен второй раз кликнуть по радиокнопке.

Dilettante_Pro 22.05.2019 12:51

Янковиц,
Сколько групп радиокнопок?

рони 22.05.2019 12:52

Янковиц,
что мешает сосчитать клики?

Янковиц 22.05.2019 13:21

Цитата:

Сообщение от Dilettante_Pro (Сообщение 508089)
Янковиц,
Сколько групп радиокнопок?

1 группа радиокнопок

laimas 22.05.2019 13:56

Цитата:

Сообщение от Янковиц
то есть первый клик не получает значения sort=_price

Почему? Может "проблему" иначе решать надо?

Malleys 22.05.2019 14:10

Цитата:

Сообщение от Янковиц
Когда второй раз кликаю по радиокнопке, отправки формы нет.

А где вы вычитали, что так формы отправляются? Да ещё отправка зависит от количества нажатии! Наверно жутко плохой UX!
Цитата:

Сообщение от Янковиц
Нужно отправить форму при клике по радиокнопке.

Для отправки есть...
<input type="submit">


И почему надо 2 раза нажимать? Что это?

UPD
Может вместо radio вам нужен checkbox?

Dilettante_Pro 22.05.2019 14:27

???
Price<input type="radio" value="_price" name="sort">
Color<input type="radio" value="_color" name="sort">
Size<input type="radio" value="_size" name="sort">
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script>
$("input:radio").click(function() {
   var n = $("input:radio:checked" ).length;
   console.log(n, $("input:radio:checked" ).val());
});
</script>

Malleys 22.05.2019 14:38

Цитата:

Сообщение от Dilettante_Pro
var n = $("input:radio:checked" ).length;

Логическая оптимизация?

Dilettante_Pro 22.05.2019 14:43

?????
<form>
   Price<input type="radio" value="_price" name="sort">
   Color<input type="radio" value="_color" name="sort">
   Size<input type="radio" value="_size" name="sort">
</form>
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script>
$("input:radio").click(function() {
   $("form").submit();
});
$("form").on("submit", function(e) {
  console.log("submit");
  var data = new FormData(e.target);
  var output = "";
  for (var entry of data) {
    output = entry[0] + "=" + entry[1] + "\r";
  };
  console.log(output);
  e.preventDefault();
});
</script>

Dilettante_Pro 22.05.2019 14:44

Цитата:

Сообщение от Malleys
Логическая оптимизация?

Нет, просто на тему об одной группе радиокнопок.
n всегда равно 1

Янковиц 22.05.2019 14:44

Спасибо, работает

laimas 22.05.2019 15:48

Цитата:

Сообщение от Dilettante_Pro
Нет, просто на тему об одной группе радиокнопок.

Очень странно: одна группа радио кнопок, зависимых? Но при этом параметр запроса имеет два ключа sort=_price&orderby=ASC. Каким образом можно определить два параметра одной группой ради кнопок? Почему все-таки 2 раза нужно щелкать "по одной" группе?

Сортировка по возрастанию, это сортировка по умолчанию, ее можно и не указывать, то есть, если пришел признак сортировки, значит сортировать по убыванию иначе по умолчанию.

Malleys 22.05.2019 15:52

Цитата:

Сообщение от laimas
Сортировка по возрастанию, это сортировка по умолчанию

Удивительное замечание!

Представьте такое: например, в Twitter сортировка сообщении по возрастанию времени, это сортировка по умолчанию, её можно и не указывать, то есть, если пришел признак сортировки, значит сортировать по убыванию иначе по умолчанию.

Однако там сортировка по умолчанию суть по убыванию времени, и это хорошо!

Dilettante_Pro 22.05.2019 16:04

Можно долго обсуждать всевозможные варианты.
Но я так и не могу понять, в чем у ТС была проблема и как она разрешилась, и все работает:-E

laimas 22.05.2019 16:09

Цитата:

Сообщение от Malleys
Удивительное замечание!

:)

Это не замечание, это определено SQL, оператор ASC можно опускать в запросе.

Dilettante_Pro 22.05.2019 17:04

Цитата:

Сообщение от laimas
Сортировка по возрастанию, это сортировка по умолчанию, ее можно и не указывать, то есть, если пришел признак сортировки, значит сортировать по убыванию иначе по умолчанию.

Для этого достаточно одного чекбокса - вторая группа радиокнопок не нужна.
Но можно только догадываться, что там у ТС

laimas 22.05.2019 17:09

Цитата:

Сообщение от Dilettante_Pro
Для этого достаточно одного чекбокса

Вот именно.

Цитата:

Сообщение от Dilettante_Pro
вторая группа радиокнопок не нужна

А него и нет второй, удивляет как одной можно выбрать два независимых параметра.


Часовой пояс GMT +3, время: 17:49.