Переключатель Jquery не может установить значение на меньшее значение с помощью кода

#javascript #html #radio-button

#javascript #HTML #переключатель

Вопрос:

У меня есть группа переключателей, похожих на следующие:

 <label><input type="radio" name="GroupTypeOffUnitOnUnit" value="0">1:1</label>

<label><input type="radio" name="GroupTypeOffUnitOnUnit" value="1">Option</label>
<label><input type="radio" name="GroupTypeOffUnitOnUnit" value="2">Other Option</label>
 

Я извлекаю значения через AJAX, и я подтвердил, что возвращаемые значения верны. Однако, когда я пытаюсь программно установить значение на значение, которое меньше текущего значения, например, текущее значение равно 2, и я пытаюсь установить его на 1, выбранный переключатель остается кнопкой с 2. С другой стороны, если выбранный в данный момент переключатель имеет значение 1, я могу затем установить его на два.

Я чувствую, что это может иметь какое-то отношение к порядку, в котором кнопки появляются на веб-странице, поскольку более высокие значения следуют за более низкими значениями, но я пытаюсь это выяснить. Кроме того, вот моя функция javascript, которая должна проверять новое значение.

 function setRadioInputValue(targetid, name, value)
{
   $("#"   targetid   " input[name="   name   "][value="   value   "]").attr('checked', true);
}
 

Ответ №1:

Вам нужно будет сначала установить для всех переключателей целевого ввода checked значение false, а ЗАТЕМ установить желаемое значение true. В противном случае «самое высокое» (или самое дальнее дочернее) значение, установленное на true , будет отображаться как отмеченное.

Что — то вроде этого:

 function setRadioInputValue(targetid, name, value) {
    $("#"   targetid   "input[name="   name   "]").each(function(it) {
        it.attr('checked', false);
    });
    $("#"   targetid   " input[name="   name   "][value="   value   "]").attr('checked', true);
}
 

Ответ №2:

Вероятно, вам не хватает дополнительных апострофов. Попробуйте это:

 function setRadioInputValue(targetid, name, value) {
   $("#"   targetid   " input[name='"   name   "'][value='"   value   "']").attr('checked', true);
}
 

Ответ №3:

Обдумав это, я решил вызвать щелчок по определенному переключателю, поэтому вызов должен выбрать переключатель, а затем запустить функцию .click() следующим образом:

 $("#"   targetid   " input[name="   name   "][value="   value   "]").click();