2014-09-24 96 views
1

我有兩種手機的各種電話信息的表單,其中包括兩個對應於我的操作類中的布爾值的複選框。如果用戶輸入兩個相同的電話號碼,則下面的javascript將自動設置第二個複選框。Struts2頁面沒有從複選框返回正確的值

if(phone1 != '' && phone1==phone2) 
{ 
    document.getElementById("phone2Type").value = document.getElementById("phone1Type").value; 
    document.getElementById("phone2Text").value = document.getElementById("phone1Text").value; 
    document.getElementById("phone2Text").checked = document.getElementById("phone1Text").checked; 

    if(phone2Type=='CELL' && document.getElementById('phone2Text') != null) 
    {  
     document.getElementById('phone2Text').disabled=true; 
    } 

    document.getElementById("phone2Type").disabled=true;  
} 

而且JSPX代碼與它一起去:

<s:checkbox id="phone1Text" 
    onclick="javascript:enableTextingBox()" cssClass="phoneText" 
    name="phoneInfo.phone1.textOptionSelected" fieldValue="true" 
    value="phoneInfo.phone1.textOptionSelected" 
    disabled="%{!phoneInfo.phone1.textOptionEnabled || inputFieldDisabled}" /> 

<s:checkbox id="phone2Text" 
    onclick="javascript:enableTextingBox()" cssClass="phoneText" 
    name="phoneInfo.phone2.textOptionSelected" fieldValue="true" 
    value="phoneInfo.phone2.textOptionSelected" 
    disabled="%{!phoneInfo.phone2.textOptionEnabled || inputFieldDisabled}" /> 

我看到的問題是,當我使用JavaScript來設置phone2Text等於phone1Text相應的布爾(phoneInfo.phone2.textOptionSelected)不設置。我很困惑,因爲上面的jspx在我忘記javascript並手動選中框時正常工作。

望着參數POST方法發送的,而不是我看到:

_checkbox_phoneInfo.phone2.textOptionSelected: "true"

我希望看到的是:

phoneInfo.phone2.textOptionSelected: "true"

我不是當然,如果這是一個Struts2問題或一些我不熟悉的javascript特性。

+0

http://stackoverflow.com/a/16461142/1654265 – 2014-09-24 15:24:37

+0

你是否看到兩個複選框在點擊第一個複選框時被選中?你確定你的複選框沒有被禁用嗎?因爲在您禁用複選框輸入的js中存在if條件。 – 2014-09-24 19:21:59

+0

單擊第一個複選框後,將檢查這兩個複選框。但是,第二個複選框變灰。我認爲禁用它只是一個UI效果,並沒有關係它是否實際返回一個值。 – 2014-09-24 20:02:44

回答

1

Aleksandr M完全正確。

這是引起了我的問題行:

document.getElementById('phone2Text').disabled=true; 

禁用一個文本框,導致其價值不是在POST操作來發送。