У меня есть HTML-форма с множеством полей выбора и ввода, с помощью которых пользователь выбирает элементы своего заказа для каждой категории (элементы одной и той же категории имеют один и тот же класс). каждый элемент также имеет поля для других свойств, например, количество, цвет и т. д.
Вот пример формы:
<form>
<!--Category: Cats-->
<label>Cat:</label>
<select id="cat" class="cats">
<option>nice</option>
<option>ugly</option></select>
<label>Quantity:</label>
<input type="text" id="cat_qty" class="cats" />
<br />
<!--Category: Dogs-->
<label>Dog:</label>
<select id="dog" class="dogs">
<option>nice</option>
<option>ugly</option></select>
<label>Quantity:</label>
<input type="text" id="dog_qty" class="dogs" />
<br />
</form>
Реальная форма имеет много много других категорий. Кроме того, из-за необходимости представления, есть поля, принадлежащие к одной категории, которые я не могу сгруппировать вместе в одном родительском теге, что означает, что они находятся в совершенно разных местах на странице HTML.
Давайте представим, что пользователь только что изменил одно поле в форме. Я ищу самый элегантный способ вызывать функцию JS каждый раз, когда происходит изменение, и передавать ей значения всех полей, которые имеют один и тот же класс измененного поля, чтобы я мог создать строка JSON, которую я отправлю, используя вызов Jquery .AJAX, чтобы обновить запись в моей БД.
Например, если пользователь выберет в 'cat' - 'ugly', будет вызвана функция JS, которая может создать переменную:
fields = { "cat":"ugly",
"cat_qty" : "6"}
, а затем
$.ajax({type: "POST",
url: "ajax/update.php",
data: { Myfields: fields },
dataType: "json",
success: function() {}
});
Можете ли вы предложить элегантный способ? Я не уверен, использовать ли вызовы OnChange, функцию «Изменить» Jquery (в любом случае я не нашел, как это сделать, используя их ..) ИЛИ ЛЮБОЙ ДРУГОЙ СПОСОБ :))
Большое спасибо!