Struts - JSP - Включение / отключение кнопки и текстового поля на основе состояния флажка с использованием Java Script - PullRequest
0 голосов
/ 17 ноября 2011

Я использую Struts Framework в своем проекте.Использовали один флажок, одну кнопку и одно текстовое поле на моем JSP.Ниже приведен код для всех них.

<html:text  name="FormBean" styleId = "codeERText" property="codeER" onFocus="change_classe_byId(this,'on');" onBlur="change_classe_byId(this,'off');" styleClass="off" maxlength="5"/>

<input type="button" styleId = "deduireButton" name = "deduireButton" id = "deduireButton" value="<bean:message key="Property.deduire"/>"   onClick="javascript:validate('DEDUIRE');">

<html:checkbox styleId="idBrodcastCheckbox" property="sentToAll" name="FormBean" onChange="javascript:broadcastValidate();"  />

Требование: когда флажок установлен, он должен отключить кнопку, текстовое поле и наоборот.

Ниже приведена функция, котораявызывается в onChange Event of Checkbox. При запуске этого приложения оно просто выдает первое предупреждение («Inside Broadcast Validate»). Никаких других предупреждений не возникает. Ни кнопка, ни текстовое поле не отключены.Я полагаю, он не входит ни в одну из пар If / Else.

Используемый сервер приложений - Weblogic 8.1.

function broadcastValidate(){

    alert("Inside Broadcast Validate");
    if(document.forms[0].idBrodcastCheckbox.checked == true)
    {
        alert("checked true");
        document.forms[0].codeERText.disabled = true;
        document.forms[0].deduireButton.disabled = true;
    }
    else
    {
        alert("checked false");
        document.forms[0].codeERText.disabled = false;
        document.forms[0].deduireButton.disabled = false;
    }

    alert("First If over");

    if(this.document.FormBean.getElementById("idBrodcastCheckbox").checked == true)
    {
        alert("checked true 2");
        this.document.getElementById("codeERText").disabled = true;
        this.document.getElementById("deduireButton").disabled = true;
    }
    else
    {
        alert("checked false 2");
        this.document.getElementById("codeERText").disabled = false;
        this.document.getElementById("deduireButton").disabled = false;
    }
    alert("Second If over ");

    if(document.forms[0].sentToAll.value == true)
    {
        alert("checked true - Sent to All");
        document.forms[0].codeERText.disabled = true;
        document.forms[0].deduireButton.disabled = true;
    }
    else
    {
        alert("checked false - Sent to All");
        document.forms[0].codeERText.disabled = false;
        document.forms[0].deduireButton.disabled = false;
    }

    alert("Third If over - Exiting Broadcast Validate");
}

Пожалуйста, предложите какое-то решение для этого.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2011

Я попробовал ваш код и document.forms[0].idBrodcastCheckbox.checked возвращает true.Когда вы говорите, что ничего, кроме "Inside Broadcast Validate", не получают оповещения, возможно, после первого оповещения возникает ошибка.Как уже упоминал Дэйв, используйте консоль Javascript, чтобы увидеть любые ошибки.Также проверьте, не пропустили ли вы тег html:form, в котором должны храниться элементы.

0 голосов
/ 18 ноября 2011

Это точно не будет this.document.FormBean.getElementById(), потому что getElementById() - это метод в документе.Чтобы получить элемент по идентификатору, что я и сделал бы в этом случае, используйте:

document.getElementById('idBrodcastCheckbox')

Вам не нужно указывать атрибут name в флажке;по умолчанию предполагается, что свойства существуют в действии ActionForm.Если вы специально не делаете что-то иначе, используйте настройки по умолчанию.

Если вы даже не получаете предупреждение "First If over", проверьте консоль JavaScript.

...