#javascript #jquery
#javascript #jquery ( jquery ) #jquery
Вопрос:
У меня есть PHP-страница с такой формой, как эта:
<form class="form3">
<label class="form3"><input type="checkbox"> Item-1</label>
<label class="form3"><input type="checkbox"> Item-2</label>
<label class="form3"><input type="checkbox"> Item-3</label>
<label class="form3"><input type="checkbox"> Item-4</label>
<label class="form3"><input type="checkbox"> Item-5</label>
</form>
У меня есть переменные javascript, установленные следующим образом:
var checked = ["", "yes", "", "yes", ""];
Теперь, когда страница загружена, я хочу проверить, является ли проверенное значение «да», тогда я хочу сначала поместить эти входные элементы в список, а остальные позже, вот так:
<form class="form3">
<label class="form3"><input type="checkbox" checked="checked"> Item-2</label>
<label class="form3"><input type="checkbox" checked="checked"> Item-4</label>
<label class="form3"><input type="checkbox"> Item-1</label>
<label class="form3"><input type="checkbox"> Item-3</label>
<label class="form3"><input type="checkbox"> Item-5</label>
</form>
Я предполагаю, что jQuery будет способом сделать это.
это означает, что мне нужно будет перебрать поля формы (что я не уверен, как это сделать) и внутри цикла проверить, является ли соответствующая переменная пустой или «да», и если да, распечатать это поле формы. Затем снова пройдите через тот же цикл и выведите все поля, где соответствующая переменная пуста.
Надеюсь, логика верна.
Я могу перебирать элементы формы следующим образом:
$.each($('.form3'),function(i,e){
if(checked[i] == "")
{
e.appendTo($('.form3'));
}
});
НО
, очевидно, строка appendTo выдает мне ошибку:
Uncaught TypeError: Object #<HTMLLabelElement> has no method 'appendTo'
Итак, теперь мне нужно было бы знать, как выбрать каждую из строк и изменить их порядок во время цикла.
Спасибо
Комментарии:
1. можете ли вы показать нам, что такое i и e?
2. i — номер индекса. e выбрал элемент <label> …… Я отредактировал приведенный выше код, добавив правильное имя класса к элементу формы.
Ответ №1:
Попробуйте это вместо:
$('.form3').each(function(i,e) {
if(checked[i] == "") {
$(this).find('input[type=checkbox]').attr('checked', true);
$(this).appendTo($('form'));
}
});
Комментарии:
1. Когда я пытаюсь $(this) Я получаю эту ошибку: —————— Неперехваченная ошибка: HIERARCHY_REQUEST_ERR: Исключение DOM 3
2. Я добавил этот код, чтобы сделать выбранные флажки отмеченными’: ——— $( this).find(‘ввод [тип= флажок]’).attr(‘проверено’, true);
3. @ssdesign ладно, круто, рад, что смог помочь. Добавит его в ответ, чтобы другие могли его прочитать 🙂
Ответ №2:
вы думаете в правильном направлении, вот как я бы позаботился об этом:
$('.form3').each(function(){
var lbl = $(this);
var chk = lbl.find('input[type=checkbox]');
if(chk.attr('checked'))
{
lbl.prependTo($('#myForm'));
}
});
вы можете найти рабочий пример здесь:
http://jsfiddle.net/saelfaer/LbMQG/1 /
Комментарии:
1. Это может привести к чему-то, но ваше предложение предполагает, что элементы уже проверены. Мне нужно проверить с помощью массива javascript и посмотреть, говорит ли соответствующее значение массива «да», затем переместить этот элемент вверх. Я изо всех сил стараюсь повторно использовать части вашего кода и посмотреть, может ли это меня куда-нибудь привести….
2. Как вы можете видеть, мне нужно добавить атрибут «проверено», если значение массива равно «да».
3. поскольку другой пример уже устранил вашу проблему, я не буду беспокоиться о том, чтобы изменить свою, поскольку это потребовало бы копирования именно того, что он сделал: P
4. Спасибо, что пришли на помощь. Спасибо.