0

我想使用單選按鈕選擇要在我的表單上提交的字段。 我使用這個腳本:javascript單選按鈕無法在IE7和IE8上工作

<script> 
    function validateForm(){ 
     var x=document.forms["preinsert"]["RIF"].value; 
     var y=document.forms["preinsert"]["CTP"].value; 
     var xd=document.forms["preinsert"]["RIF"].disabled; 
     var yd=document.forms["preinsert"]["CTP"].disabled; 
     if (xd == false){ 
      if (x==null || x==""){ 
       alert("The first field can't be empty."); 
       return false; 
      } 
     } 
     else if (yd == false){ 
      if (y==null || y==""){ 
       alert("The second field can't be empty."); 
       return false; 
      } 
     } 
    } 
</script> 

這個HTML代碼:

<form name="preinsert" action="/ServletPreInsert" method="post" onsubmit="return validateForm()"> 
    <table> 
     <tr> 
      <td> 
       <input type="radio" name="rad" checked="checked" onclick="RIF.disabled=false; CTP.disabled=true;"/> 
       <select name="RIF1" class="right-select"> 
        <option selected="selected">NB</option> 
        <option>LTI</option> 
       </select> 
      </td> 
      <td> 
       <input id="RIF" name="RIF" class="fixed-input" type="text"> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input type="radio" name="rad" onclick="RIF.disabled=true; CTP.disabled=false;"/>Counterparty 
      </td> 
      <td> 
       <select id="CTP" name="CTP" class="fixed-select" disabled> 
        <option>Option_1</option> 
        <option>Option_2</option> 
        <option>Option_3</option> 
       </select> 
      </td> 
     </tr> 
    </table> 
    </br></br> 
    <p align="right"><input type="submit" value="Insert"></p> 
</form> 

什麼我注意到的是:如果我像IE7/8,瀏覽器使用此代碼時,我選擇第二個單選按鈕,一個選項然後提交我的表單,錯誤信息從javascript出現:「第二個字段不能爲空。」 但是,如果我在第一個字段中鍵入某些內容,並且選擇了第一個單選按鈕,它將按我的意願工作。

這個「瘋狂」的事情在Firefox 26.0上不會發生。

那麼,怎麼了?

+0

說真的,你使用窗口上的全局名稱來訪問元素,並將它們設置爲禁用onclick等。它對我來說看起來真的很拗口嗎? – adeneo

+0

你有什麼建議呢?謝謝。 – abierto

+0

我建議適當的事件處理程序和選擇器。 – adeneo

回答

0

如果你想在IE7/8這個工作,你必須改變這一點:

<select id="CTP" name="CTP" class="fixed-select" disabled> 
    <option>Option_1</option> 
    <option>Option_2</option> 
    <option>Option_3</option> 
</select> 

成這樣:

<select id="CTP" name="CTP" class="fixed-select" disabled> 
    <option value="Option_1">Option_1</option> 
    <option value="Option_2">Option_2</option> 
    <option value="Option_3">Option_3</option> 
</select> 

因爲如果value參數沒有設置,它會永遠如圖一個null值。