Ответ 1
вам нужно использовать функцию "prop":
.prop('checked', true);
Перед jQuery 1.6 (см. user2063626 ответ):
.attr('checked','checked')
Я уже пробовал все возможные способы, но я все еще не работал.
У меня модальное окно с checkbox
Я хочу, чтобы при открытии модальности проверка или снятие флажка checkbox
должна основываться на значении базы данных. (У меня есть уже работающие с другими полями формы.) Я начал проверять его, но это не сработало.
Мой html div:
<div id="fModal" class="modal" >
...
<div class="row-form">
<div class="span12">
<span class="top title">Estado</span>
<input type="checkbox" id="estado_cat" class="ibtn">
</div>
</div>
</div>
и jquery:
$("#estado_cat").prop( "checked", true );
Я также пробовал с attr
, а другие видели здесь на форумах, но никто, похоже, не работает.
Может ли кто-нибудь указать мне правильный путь?
EDIT: хорошо, я действительно что-то пропустил здесь... Я могу проверить/снять флажок с помощью кода, если флажок находится на странице, но это в модальном окне, я не могу. Я пробовал десятки разных способов...
У меня есть ссылка, которая должна открыть модальную:
и jquery для "прослушивания" клика и выполнения некоторых операций, таких как заполнение некоторых текстовых полей данными, поступающими из базы данных. Все работает так, как я хочу, но проблема в том, что я не могу установить checkbox check/unchecked с помощью кода. помогите пожалуйста!
$(function() {
$(".editButton").click(function(){
var id = $(this).data('id');
$.ajax({
type: "POST",
url: "process.php",
dataType:"json",
data: { id: id, op: "edit" },
}).done(function( data ) {
//the next two lines work fine, i.e., it grabs the value from database and fills the textboxes
$("#nome_categoria").val( data['nome_categoria'] );
$("#descricao_categoria").val( data['descricao_categoria'] );
//then I tried to set the checkbox checked (because its unchecked by default) and it does not work
$("#estado_cat").prop("checked", true);
$('#fModal').modal('show');
});
evt.preventDefault();
return false;
});
});
вам нужно использовать функцию "prop":
.prop('checked', true);
Перед jQuery 1.6 (см. user2063626 ответ):
.attr('checked','checked')
Принимая все предложенные ответы и применяя их к моей ситуации - пытаясь проверить или снять флажок на основе полученного значения true (если нужно установить флажок) или false (не следует устанавливать флажок) - я пробовал все выше, и нашел, что использование правильных решений .prop( "checked", true) и .prop( "checked", false).
Я не могу добавлять комментарии или ответы еще, но я чувствовал, что это достаточно важно, чтобы добавить к разговору.
Вот длинный код для модификации полного календаря, который говорит, что если полученное значение "allDay" истинно, установите флажок с идентификатором "even_allday_yn":
if (allDay)
{
$( "#even_allday_yn").prop('checked', true);
}
else
{
$( "#even_allday_yn").prop('checked', false);
}
Чувак попробуй под кодом:
$("div.row-form input[type='checkbox']").attr('checked','checked')
ИЛИ
$("div.row-form #estado_cat").attr("checked","checked");
ИЛИ
$("div.row-form #estado_cat").attr("checked",true);
Поскольку вы находитесь в модальном окне (будь то динамическое или на странице), вы можете использовать следующий код для достижения своей цели: (я столкнулся с той же проблемой на своем сайте, и именно так я ее исправил)
HTML:
<div class="content-container" style="text-align: right;">
<input type="checkbox" id="QueryGroupCopyQueries">
<label for="QueryGroupCopyQueries">Create Copies</label>
</div>
CODE:
$.each(queriesToAddToGroup, function (index, query) {
if (query.groupAddType === queriesGroupAddType.COPY) {
// USE FIND against your dynamic window and PROP to set the value
// if you are using JQUERY 1.6 or higher.
$(kendoWindow).find("input#QueryGroupCopyQueries").prop("checked", true);
return;
}
В приведенном выше "kendoWindow" находится мое окно (мое динамическое, но я также делаю это при добавлении к элементу непосредственно на странице). Я просматриваю массив данных ( "queriesToAddToGroup" ), чтобы увидеть, есть ли у каких-либо строк атрибут COPY. Если это так, я хочу включить флажок в окне, которое устанавливает этот атрибут, когда пользователь сохраняет из этого окна.
"checked" атрибут "галочки" установите флажок, как только он появится. Чтобы проверить/снять флажок, вам нужно установить/отключить атрибут.
Для проверки флажка:
$('#myCheckbox').attr('checked', 'checked');
Для снятия флажка:
$('#myCheckbox').removeAttr('checked');
Для проверки проверенного состояния:
if ($('#myCheckbox').is(':checked'))
Надеюсь, что это поможет...
.attr("checked",true)
.attr("checked",false)
будет работать. Убедитесь, что true и false не входят в кавычки.
Вы можете написать, как указано ниже.
HTML
<input type="checkbox" id="estado_cat" class="ibtn">
JQuery
$(document).ready(function(){
$(".ibtn").click(function(){
$(".ibtn").attr("checked", "checked");
});
});
Надеюсь, он сработает для вас.
$("#divParentClip").find("#subclip_checkbox")[0].checked=true;
Найти будет возвращать массив, поэтому используйте [0], чтобы получить, даже если есть только один элемент
если вы не используете find,
$("#subclip_checkbox").checked=true;
это отлично работало в Mozilla Firefox для меня
Работал для меня:
$checkbok.prop({checked: true});
Попробуйте это, так как вы используете jQuery UI, вероятно (если не прокомментировать)
$("#fModal" ).dialog({
open: function( event, ui ) {
if(//some hidden value check which stores the DB value==expected value for
checking the Checkbox)
$("div.row-form input[type='checkbox']").attr('checked','checked');
}
});
Вы пробовали использовать $("#estado_cat").checkboxradio("refresh")
в своем флажке?
Это работает.
$("div.row-form input[type='checkbox']").attr('checked','checked');
Это происходит потому, что вы с новейшей версией jquery attr('checked')
возвращаете 'checked'
, а prop('checked')
возвращает true
.
Если вы хотите использовать эту функцию для сценария GreaseMonkey для автоматической установки флажка на странице, имейте в виду, что простая установка свойства флажка может не вызвать связанное действие. В этом случае, "щелкнув" флажок, вероятно, будет (и установить свойство флажка также).
$("#id").click()
Я тоже столкнулся с этой проблемой.
и вот мой старый код не работает
if(data.access == 'private'){
Jbookaccess.removeProp("checked") ;
//I also have tried : Jbookaccess.removeAttr("checked") ;
}else{
Jbookaccess.prop("checked", true)
}
вот мой новый код, который теперь работает:
if(data.access == 'private'){
Jbookaccess.prop("checked",false) ;
}else{
Jbookaccess.prop("checked", true)
}
поэтому ключевой момент перед тем, как он сработает, убедитесь, что проверенное свойство существует и не удаляется.
Установите флажок после загрузки модального окна. Я думаю, вы устанавливаете флажок перед загрузкой страницы.
$('#fModal').modal('show');
$("#estado_cat").attr("checked","checked");
Я знаю, что это требует решения Jquery, но я просто хотел бы отметить, что очень просто переключить это в простом javascript.
var element = document.getElementById("estado_cat");
element.checked = 1;
Это будет работать во всех текущих и будущих версиях.