Я пытаюсь использовать jQuery/javascript для удаления класса из именованного элемента ввода, если отмечен флажок.
У меня есть несколько флажков, каждый со скрытым (на странице) текстовым полем ввода.
Поле ввода и ввода текста называется "question_X" и "question_X_description" соответственно. (где X - число от 0 до 100, скажем)
Поэтому я пытаюсь определить переменную в моем коде, которая определяется как "это имя элемента" + "_ описание", а затем использовать ее для определения подходящего элемента для удаления класса.
Вот что я пробовал:
$('input:checkbox').change(function(){
var x = $(this).attr('name').'_description';
if($(this).is(":checked")) {
$('input[name="x"]').removeClass("hidden");
} else {
$('input[name="x"]').addClass("hidden");
}
});
Однако ничего не происходит, если флажок установлен. Правильно ли я ссылаюсь на свою переменную?
Используйте консоль, она будет иметь сообщения об ошибках.
Первая проблема
var x = $(this).attr('name').'_description';
^^^
Это не то, как вы строите строку в JavaScript. JavaScript не используется .
для объединения строк. Он использует +
var x = $(this).attr('name') + '_description';
Второй выпуск
$('input[name="x"]').
Вы не ищете строку, которую вы создали, вы ищете элемент с именем x
Должно быть
$('input[name="' + x + '"]').
Используйте document.getElementById('element_name')
Пример элемента HTML: <input type="text" id="element_name">
$('input[name="x"]').removeClass("hidden");
Будем искать:
<input name="x" />
Пытаться
$(name="'+x+'").removeClass("hidden");