#javascript #jquery #ajax #checkbox #forms
#javascript #jquery #ajax #флажок #формы
Вопрос:
Итак, у меня есть форма поиска ajax, которая выдает результаты с флажком: вот часть кода PHP для каждого результата поиска:
<input type="checkbox" class="lovkrav_checkbox checkbox_search" name="lovkrav['.$lovkrav_id.']" value="'.$lovkrav_id.'" orig-id="lovkrav'.$lovkrav_id.'" id="lovkravs'.$lovkrav_id.'" '.$checked.'/>
и на веб-сайте уже есть двойной флажок с тем же именем, но с другим идентификатором.
Используя свойство «orig-id«, я получаю идентификатор двойного флажка. Оба флажка имеют одинаковый класс lovkrav_checkbox.
Я дошел до того, что событие щелчка определяется двойным флажком, как и должно быть, но не флажком, на который вы нажали! Вот код:
$(document).on("click",".lovkrav_checkbox",function(e){
toggle_id = document.getElementById($(this).attr("orig-id"));
$(toggle_id).trigger("click");
});
Чего я хочу добиться, так это когда пользователь нажимает на один флажок — двойной флажок (тот, у которого одинаковое свойство name) также будет установлен / снят.
Что я делаю не так?
Комментарии:
1. я не понимаю, что вы пытаетесь сделать, пожалуйста, отредактируйте свой вопрос и уточните.
2. Чего я хочу добиться, так это когда пользователь нажимает на один флажок — двойной флажок (тот, у которого одинаковое свойство name) также будет установлен / снят.
3. @trojan Подводный камень здесь заключается в том, что если ваша страница загружается с одним из установленных флажков .. возможна ли такая ситуация? в этом случае вы бы хотели, чтобы каждый щелчок проверял непроверенный и непроверенный флажок?
Ответ №1:
Было бы проще переключить проверенное состояние с помощью ванильного javascript.
HTML
<input type="checkbox" name="test">
<input type="checkbox" name="test">
JS
//All of the checkboxes
var $checkboxes = $("input[type=checkbox][name=test]");
//The event handler
$checkboxes.on("click", function() {
//Get the state of the check box you clicked
var checkedState = this.checked
//Make it the state of all the checkboxes
$checkboxes.each(function() {
this.checked = checkedState;
});
});
Вот скрипка
Комментарии:
1. Я получаю эту ошибку: Ошибка: синтаксическая ошибка, нераспознанное выражение: ввод [тип = флажок] [имя = lovkrav [621]]
2. Я понял!, пришлось экранировать имя в квотах: var $checkboxes = $(«input[type= checkbox][name='» $(this).attr(‘name’) «‘]»);
3. Возможно, вы захотите изменить селектор $checkboxes на что-то более конкретное в производстве. Может быть, попробовать
.lovkrav_checkbox[name='" $(this).attr('name') "']
Ответ №2:
Вы можете попробовать это:
$(document).on("click",".check",function(e){
$("." this.className).prop("checked", this.checked);
});
Комментарии:
1. это не сработает, поскольку он переключает все флажки с одним и тем же классом
Ответ №3:
Попробуйте и это:
js:
$(document).on("click",".lovkrav_checkbox",function(e){
toggle_id = $(this).attr("name");
isChecked = $(this).prop("checked");
$("input:checkbox").each(
function(){
if($(this).attr("name") == toggle_id amp;amp; isChecked){
$(this).prop("checked",true);
}
else{
$(this).prop("checked",false);
}
});
});
Ответ №4:
Попробуйте это
$("input[type=checkbox][name=test]").prop("checked",true);