Изменение значения имени входа - PullRequest
2 голосов
/ 06 августа 2010

Можно ли изменить значение имени для элемента ввода?

Вот мой код, но я могу установить все, кроме имени.

$('#country').change(function(){
    var $country = $(this);
    var $state = $('#state');
    var $county = $("#county");
    if($country.val() != 226){
        $state.attr('name', '');
        $state.closest('p').hide();
        $county.attr('name', 'user[state]');
        $county.closest('p').show();
    }else{          
        $state.attr('name', 'user[state]');
        $state.closest('p').show();
        $county.attr('name', '');
        $county.closest('p').hide();            

    }
});

Любые идеи, зачем устанавливать имяattr не работает?

Надеюсь, вы можете посоветовать

Ответы [ 2 ]

2 голосов
/ 06 августа 2010

Я делаю снимок в темноте, похоже, что вы хотите запретить отправку этих элементов на сервер, в этом случае вместо попытки изменить атрибут 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);
});
0 голосов
/ 06 августа 2010

Если я правильно помню, это ошибка IE.Мне пришлось преобразовать объект JQuery obj в строку, изменить имя в виде строки, а затем создать новый объект jquery вокруг строки html.

так

var form = $('#myForm').html();
form.replace('name', 'newName');
$('#myFormWrapper').html(form);

Видимо, изменить атрибут имени сложнее, чем должно быть: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...