2014-09-24 34 views
0

我有一個問題,選擇一個隱藏的輸入字段在同一tr但不同的td。在我的Javascript下面:jQuery選擇隱藏的輸入元素在相同的tr不同td

function MarkAsChanged() { 
    $(this).addClass('changed'); 
    var $row = $(this).closest('td').prev('td > input[type="hidden"]'); 
    $row.addClass('changed'); 
} 
$(':input[type="text"]').blur(MarkAsChanged).change(MarkAsChanged); 

正如你可以看到我已經嘗試了一些選擇器(VAR $行)。 的「本」中的代碼是指在下面的HTML代碼中輸入元素「布拉布拉文本」:

<tr> 
<td><input type="hidden" value="1" name="blabla-hidden"></input></td> 
<td>foo 1</td> 
<td>foo 2</td> 
<td></td> 
<td><input type="text" value="2" name="blabla-text"></input></td> 
</tr> 

所以,如果你改變輸入「布拉布拉文本」的值,我想有隱藏的輸入字段將類更改爲「已更改」。我不能在選擇器中使用名稱/ id,因爲表格有多行,我只想將更改後的數據發佈到我的PHP(所以我只發佈class = changed的文本框)。 Javascript適用於文本字段,但不適用於隱藏字段。

我真的很希望我很清楚,如果不是,請告訴我怎麼說。

在此先感謝!

+0

所以才選擇該行,並找到隱藏的輸入。 '.clostest('tr')。find('input [type =「hidden」]')' – epascarello 2014-09-24 12:26:12

+0

爲什麼不簡單'$(this).closest('tr')。find('input [type =「hidden」 ]')'? – Satpal 2014-09-24 12:26:54

回答

1

試試這個:

function MarkAsChanged() 
{ 
    $(this).addClass('changed'); 
    var $row = $(this).closest('tr').find('input[type="hidden"]'); 
    $row.addClass('changed'); 
} 
$('input[type="text"]').blur(MarkAsChanged).change(MarkAsChanged); 

演示:

你必須找到最接近的 'TR' 標籤,並使用 '查找' 找到隱藏字段。

http://jsfiddle.net/ymm6j4rq/

+0

非常感謝!有時答案可以這麼簡單:) – Gun5m0k3 2014-09-24 12:52:19

+0

@ user3201580,不客氣。很高興幫助你。 – RGS 2014-09-25 03:58:28

0

您可以使用此代碼按你的表結構:

<table> 
     <tr> 
     <td><input type="hidden" value="1" name="blabla-hidden"></input></td> 
     <td>foo 1</td> 
     <td>foo 2</td> 
     <td></td> 
     <td><input type="text" onkeyup="MarkAsChanged(this);" value="2" name="blabla-text"></input></td> 
     </tr> 
    </table> 

    <script> 



     function MarkAsChanged(curObj) 
     { 
      $(curObj).addClass('changed'); //curObj is Your Textbox 

      var hiddenFieldObj = $(curObj).parent('td').parent('tr').find('td').eq(0).find('input[type="hidden"]'); //hiddenFieldObj is Your Hidden Field 

      $(hiddenFieldObj).addClass('changed');    
     }   

    </script> 

希望它應該是有用