2014-02-26 81 views
1

我需要編寫一些jQuery/javascript在提交表單前進行一些驗證,因爲我必須檢查每個非常具體的結果。根據我的測試,我相信我正在使用我的驗證測試訪問我的表中的$(this)的正確數據行,但是我無法將輸入的值輸入到行的第二個td的文本框中。事情是不正確使用:jQuery獲取文本框的值

alert($(this).closest('td').find($("input[name=test]")).val())

其阻止了jQuery從得到鍵入下面的HTML的測試文本框中的值。

<tr> 
<td> 
    <select id="selectId3" name="selectId3" data-val-required="The selectId3 field is required." data-val-number="The field selectId3 must be a number." data-val="true"> 
     <option value="">-- Select Area --</option> 
     <option value="2">2</option> 
     <option value="6">6</option> 
     <option value="7">7</option> 
     <option value="10">10</option> 
     <option value="13">13</option> 
     <option value="16">16</option> 
     <option value="17">17</option> 
    </select> 
</td> 
<td> 
    <span style="label2"> 
     <input id="test" type="text" value="" name="test"> 
    </span> 
</td> 
<td> </td> 

$('#myForm').submit(function() { 
    $("select").each(function() { 
     if (($(this).val() != '') && ($(this).val() != '-- Select Area --')) { 
      alert($(this).closest('td').find($("input[name=test]")).val()); 
     } 
    }); 
    return false; 
}); 

如果任何人都可以描述正確的jQuery來獲取文本框的值我將不勝感激。

在此先感謝。

回答

0

closest()沿DOM樹向上移動,而不是向下移動,因此如果$(this)等於當前行,則使用closest('td')永遠不會找到其中的td標籤。

假設你不能簡單地用id屬性直接訪問input,傑米建議,您將需要使用:

$(this).children("td:eq(0)"); 

。 。 。獲取該行的第一個td,假定$(this)引用了所需的行。要訪問它裏面的選擇的值,使用:

$(this).children("td:eq(0)").find("select").val(); 

編輯:其實,給你的代碼,還有,你可以訪問select元素的值的方式一個whol一堆,但很難要知道哪個是最有效的,而不看其餘的代碼,知道邏輯的上下文。

UPDATE:基於以下您的意見,嘗試一下本作代碼:

$(this).closest("tr").children("td:eq(0)").find("select").val(); 

。 。 。要麼 。 。 。

$(this).closest("tr").children("td:eq(0) select").val(); 

(第一個是更快)

+0

$(這)在我的腳本只是其中包含輸入文本框,我需要的細胞之前引用」的父母是「​​」。改變它,它應該工作。 – talemyn

+0

talemyn - 我沒有使用您發佈的確切功能,但它非常接近,您的建議使我朝着正確的方向發展,謝謝! – user3318152

3

通過id訪問它?

$("#test").val(); 

在本例中的#是指通過其ID查找元素(jQuery docs

0
var textboxvalue= $(this).closest('td:eq(1) input').val(); 

當量是基於0,如果1然後第二TD,對文本框,我們使用input