2013-01-06 201 views
-2

HTML的片段(與選擇):jQuery的VAL()返回不同的結果

   <table id='xxx'> 
        <tr> 
         <td> 
          <select id="obj_z" name="abc_obj_x" style="width: 200px"> 
           <option value="XXXX" >---</option> 
           <optgroup label="cer"> 
            <option value="BBBB"> QQQQ2</option> 
           </optgroup> 
           <optgroup label="car"> 
            <option value="AAAA"> QQQQ1</option> 
           </optgroup> 
          </select> 
         </td> 
         <td> 
          <select id="abc"> 
           <option value="BBBB1"> QQQQ1</option> 
           <option value="BBBB2"> QQQQ2</option> 
           <option value="BBBB3"> QQQQ3</option> 
          </select> 
         </td> 
        </tr> 
       </table> 

JS代碼:

 main_table_id = '#xxx'; //TABLE ID   

     $("#obj_z").change(function() 
     { 
      alert($(main_table_id + ' select').eq(0).val()); // GET selected option value (way by eq) 
      alert($('#obj_z').val()); // GET selected option value - Direct way 
     }); 

我是否會選擇選項QQQQ2

我們的結果:

First alert : X 

Second alert : BBBB 

我怎麼能通過第一次警報真正價值?


原因:瀏覽器保留舊文件。

解決方案:HOLD CTRL + F5。 (清潔瀏覽器緩存),而我們的瀏覽器加載最新版本的文件

我們選擇選項QQQQ2

我們的結果是:

First alert : BBBB 

Second alert : BBBB 
+1

爲什麼不是$(this).val()? tr和td在哪裏? – mplungjan

+0

不是,因爲我想從表中獲得所有選擇值:) 它是一個示例:) –

+0

但爲什麼在我的瀏覽器中返回其他值:)? –

回答

4

您有無效的標記那裏。 select元素不能是table元素的直接後代。

通過添加適當的trtd元素來修復您的HTML,使您的腳本按預期工作。

<table id='xxx'> 
    <tr><td> <!-- open row and cell element --> 
     <select id="obj_z" name="abc_obj_x" style="width: 200px"> 
      [...] 
     </select> 
    </td></tr> <!-- close cell and row element --> 
</table> 

Original - Fixed


我希望失蹤tr/td是在OP的一部分俯瞰,但因爲它是與代碼的唯一問題發表我提出這個作爲一個答案。儘管如此,請務必禁用緩存或按Ctrl + F5開發和測試代碼時。

+0

感謝您的建議,我忘記了tr,當時我正在重寫代碼:) –

+1

當然。 JSfiddle實際上每天都停止爲我工作。 '=]' –

+0

接受謝謝浪費一些時間:) –