Флажки формы / радио нуждаются в изменении класса - PullRequest
0 голосов
/ 20 июня 2011

Я делаю форму, где у пользователя есть список опций.Некоторые радио-кнопки, некоторые флажки.Пользователь, вероятно, слабонервен и передумает.Мне нужно изменить проверенное значение во входных данных, а также в классе, чтобы я мог ориентироваться на эти значения посредством отправки формы.Это должно происходить до тех пор, пока пользователь не нажмет кнопку Отправить.Вот то, что у меня есть, которое меняет атрибут и класс «флажок», но как только кнопка больше не выбрана, они не меняются обратно.Помогите!

$("input:checkbox, input:radio").change(function() {
if ($("input:checked")) {
    $(this).attr("checked",true);
    $(this).addClass("checked");
} else {
    $(this).attr("checked",false);
    $(this).removeClass("checked");
}
});

ОБНОВЛЕНИЕ : Все равно ничего.Я сократил его до того, что ниже, и он все еще не удаляет класс при изменении.

    $("input:checkbox, input:radio").change(function ()
   {
       if (this.checked)
      {
         $(this).addClass("checked");
      }
      else
       {
         $(this).removeClass("checked");
       }
   });

Ответы [ 3 ]

0 голосов
/ 20 июня 2011

Вы можете попробовать:

if ($(this).is(":checked")) {
    $(this).attr("checked",true);
    $(this).addClass("checked");
} else {
    $(this).removeAttr("checked");
    $(this).removeClass("checked");
}
0 голосов
/ 20 июня 2011

Вы пытались использовать if($(this).attr('checked')) вместо if ($("input:checked"))?attr метод - это метод получения или установки согласно используемым параметрам.

0 голосов
/ 20 июня 2011

Использование prop():

$(this).prop("checked",true);

И:

$(this).prop("checked",false);

См. Этот вопрос: .prop () vs .attr () для ссылок, почему

Также измените свой код в целом, потому что в вашей версии 1-я часть утверждения всегда будет истинной, если на вашей странице установлен флажок любой :

$("input:checkbox, input:radio").change(function ()
{
    if (this.checked)
    {
        $(this).prop("checked", true);
        //also since it is a change event you probably 
        //don't need these prop() lines
        $(this).addClass("checked");
    }
    else
    {
        $(this).prop("checked", false);
        $(this).removeClass("checked");
    }
});

ОБНОВЛЕНИЕ :

С вашим обновлением мне кажется, что оно работает: http://jsfiddle.net/maniator/r7Yf6/

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