2014-11-12 2 views
0

Итак, спецификация HTML говорит, что вы должны добавить атрибут checked в тег <input type="checkbox">, чтобы пометить его как отмеченный. Но у меня есть только значение boolean true или false.Как установить флажок с булевыми значениями

Как по дизайну, я не могу добавить логику к логическому значению, прежде чем он будет разобран на html :(. Можно ли установить флажок с логическим значением при загрузке только с помощью html или js? следующее, но onload, кажется, не вызывают:

<input type="checkbox" onload="javascript:this.checked=true" /> 

Я знаю, что я могу сделать что-то вроде этого в JQuery:.

$("[checked='false']").prop('checked',false) 

Я ищу элегантный способ решить эту проблему Это необходимо проанализировать все DOM-дерево и замедлить работу wn моя страница.


Edit (пытаясь объяснить):

В моей компании существует приложение, которое выполняет следующие действия по дизайну:

<input type="checkbox" checked="%IsValide%" > 

Сервер не автоматически заменяет %IsValide% вар с базой данных стоимость. Здесь true или false. Но тогда флажок всегда проверяется, даже если значение ложно. Я знаю, что это связано с дизайном html5: checked = "true" и checked = "false" будет отмечать флажок всегда, как отмечено.

Теперь я ищу решение использовать истинное или ложное значение от %IsValide%, чтобы правильно установить флажок с помощью javascript (или даже лучше, с html.). Я могу использовать %IsValide% в любом месте в теге html. Например:

<input type="checkbox" onload="javascript:this.checked=%IsValide%" /> 

Но я не может добавить логику, прежде чем получить разобран в HTML так:

if(%IsValide%) { 
%IsValide%="checked"; 
} 
else { 
%IsValide%=""; 
} 
+0

Значок '' не работает для вас? – j08691

+0

Это работает, но я не могу использовать его, потому что я получаю логическое значение из базы данных, и я не могу добавить логику (например, '(checkVar?" Checked ":" ")') раньше. –

+2

Извините, но я все еще не понимаю, в чем проблема/вопрос. – j08691

ответ

0

Если приложение вашей компании устанавливает checked="true" или checked="false", как вы можете видеть, это не будет вопрос с checked является логическим атрибутом, и «наличие этого логического атрибута указывает, что элемент управления выбран по умолчанию», и флажок всегда будет проверяться.

Это должно исправить:

$('input[checked="false"]').prop('checked',false) 

jsFiddle example

+0

Как я уже сказал, не совсем то, что я ищу (потому что нужно искать по всему DOM), но когда нет другого пути, я буду использовать это. –

+0

Что вы подразумеваете под «поиском по всему DOM»? – j08691

+0

$ ('input [checked = "false"]'), это будет искать каждый элемент ввода на странице. Таким образом, браузер JS движется по всему DOM-дереву и ищет его. Хотя, например, этот флажок ' 'не нужно искать по дереву, или я ошибаюсь? –

0

Я думаю, что в конечном счете, вы будете об этом неправильном пути, но если у меня не было никаких другого варианта как вы говорите , Я думаю, что лучшее, что у вас получится (с точки зрения производительности), было бы добавить класс к вашему вводу (true или false)

<input type="checkbox" class="tocheck-true"></input> 
<input type="checkbox" class="tocheck-false"></input> 

, а затем искать для этого класса:

$("input.tocheck-true").prop("checked",true); 

http://jsfiddle.net/mu81yz7y/

Поскольку мы ищем только для входов, которые имеют, что CSS класс, это должно выполнять очень хорошо.

Но, опять же, это похоже на полный взлом. Если вы спрашиваете: «Как я могу использовать клейкую ленту, чтобы закрепить двигатель на кузове моего автомобиля», может быть, вам стоит остановиться, если вы даже должны быть , задавая этот вопрос. :)

1

Я пытаюсь понять, что вы просите. Я думаю, что вы могли бы добиться этого с помощью некоторых простых JavaScript:

document.getElementById("yourCheckBoxId").checked = false; //this case it sets checked to false you can also do true 

, чтобы проверить его на странице загрузки:

<body onload='document.getElementById("yourCheckBoxId").checked = true;'> 

или избежать атрибута OnLoad для тела для проверки его сделать это:

<input type="checkbox" id="yourCheckBoxId" checked> 

Затем вы просто меняете его с помощью javascript.

Мое другое предположение, что вы хотите изменить значение флажка? Ты? Опубликуйте комментарий ниже моего ответа, сказав, что я не понимаю, о чем вы спрашиваете. Надеюсь это поможет! Вот мой источник ссылки: http://www.w3schools.com/jsref/prop_checkbox_checked.asp

+0

Я собирался опубликовать почти тот же ответ, что и этот. Однако есть вероятность, что на веб-странице будет установлено более одного флажка. Таким образом, каждый нуждается в другом 'id', но в тексте JavaScript« bodyload »тега' body' также нужны разные идентификаторы Server-variable, например: '' onload = document.getElementById ('cb01'). Checked =% IsValide1 %; document.getElementById ('cb02'). checked =% IsValide2%; "и т. д. – vernonner3voltazim

+0

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

Смежные вопросы