Я делаю снимок в темноте, похоже, что вы хотите запретить отправку этих элементов на сервер, в этом случае вместо попытки изменить атрибут name
вы можете установить disabled
атрибут , вот так:
$('#country').change(function() {
var $country = $(this), $state = $('#state'), $county = $("#county");
if($country.val() != 226) {
$state.attr('disabled', true).closest('p').hide();
$county.attr('disabled', false).closest('p').show();
} else {
$state.attr('disabled', false).closest('p').show();
$county.attr('disabled', true).closest('p').hide();
}
});
Когда элемент формы имеет атрибут disabled
, он не может быть успешным , что означает, что он не будет включен, когда вы отправляете его на сервер. Так что в приведенном выше примере просто введите оба входа name="user[state]"
с самого начала, и это исключит тот, который вам не нужен, из POST (или GET), который делает ваш <form>
.
Это не дает прямого ответа на вопрос, я понимаю это, но это еще один (я думаю) более простой способ избежать проблемы :) Вы можете сократить это далее, используя .toggle(bool)
, но я думаю, что это разрушает пример, поэтому я оставил его без сжатия выше, короткая версия будет выглядеть так:
$('#country').change(function() {
var is226 = $(this).val() == 226;
$('#state').attr('disabled', !is226).closest('p').toggle(is226);
$("#county").attr('disabled', is226).closest('p').toggle(!is226);
});