#javascript #html #user-interface #checkbox #yui
#javascript #HTML #пользовательский интерфейс #флажок #yui
Вопрос:
У меня есть флажок.
<aui:input name = "enable" id = "enable" type="checkbox" label= 'Enable' onchange='handleClick(this);' />
Я загружаю предыдущее состояние флажка при загрузке страницы. Когда проверяется предыдущее состояние, я делаю следующее.
var namespace = "<portlet:namespace/>";
window.onload = function() {
var cb = document.getElementById(namespace "enable");
cb.checked = true;
alert("state: " cb.checked);
//do something
};
Предупреждение показывает мне, что флажок установлен, true
и он выполняет следующий код. Однако в представлении не отображается флажок, который нужно установить! Чего мне не хватает?
Комментарии:
1. что это за «ранее проверенный»?
2. Это переменная, которую я установил в своем jsp, вызывая библиотеку. Это не проблема.
3. что такое
namespace "enable"
, что он возвращает?4. Это может быть проблемой, потому что. если это true , вы уже установили cb.checked = true; и предупредите, что таким образом вы получаете «состояние: true».
5. он возвращает флажок.
Ответ №1:
Плохая или хорошая вещь в AUI Input
том, что он автоматически добавляет флажок к идентификатору input:checkbox
.
<input type="checkbox" onchange="handleClick(this);" value="true" onclick="Liferay.Util.updateCheckboxValue(this); " name="_manageorganization_WAR_manageorganizationportlet_enableCheckbox" id="_manageorganization_WAR_manageorganizationportlet_enableCheckbox" class="aui-field-input aui-field-input-choice">
И в вашем случае с вашим "<portlet:namespace/>";
, он генерирует идентификатор как :
namespace "enableCheckbox"
Поэтому используйте его как :
var namespace = "<portlet:namespace/>";
window.onload = function() {
var cb = document.getElementById(namespace "enableCheckbox");
cb.checked = true;
alert("state: " cb.checked);
//do something
};
И это будет работать.