Флажок AUI не отображается как установленный, но значение равно true

#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
}; 
 

И это будет работать.