2013-06-12 24 views
1

我有一系列具有表格數據的嵌套表格。這些表是3深,所以有一個主表,它包含整個結構,一些中間表,用於保存主表的各個部分,以及包含實際數據的數據表。在jQuery的按鍵中選擇大表中的單個元素

這個想法是,當一個元素註冊一個關鍵事件時,會對註冊關鍵事件的數據行進行計算。

中的數據表的結構大致如下:

<table id="someDataTable"> 
    <tbody> 
     <tr> 
      <td >Some Title</td> 
      <td >Units</td> 
      <td >Val/Unit</td> 
      <td >Value</td> 
     </tr> 
     <tr> 
      <td><input type="text" size="30" /></td> 
      <td><input type="text" size="14" class="units"/></td> 
      <td><input type="text" size="14" class="value"/></td> 
      <td><input type="text" size="14" readonly="readonly" class=total"/></td> 
     </tr> 
... 
    </tbody> 
</table> 

表ID是唯一的,當然。

無論在很多行中它們都是'units * value = total'(它們是根據需要動態生成的,但我認爲這不重要)。

我的想法,使這個可能是爲了捕獲所有在主表中的按鍵與此:

function initialize() { 
    $(document).on('keypress', '#tblMasterTable', DoMathForRow); 
} 

,然後對可能對所有的數據表做數學題的通用函數調用。當時的想法是使用「這個」作爲識別手段......

function DoMathForRow() { 

    tKeyedBox = this; 

    //Do Things Here 
} 

基本上,我希望「這個」將返回已輸入,在輸入框中,這樣我就可以有效地說

tKeyedBox.parent().parent() 

並有權訪問確切的行是否有按鍵事件。從那裏開始休息很容易。

但是,'this'返回整個主表,這是非常不幸的。

我的問題如下:如何檢索輸入框(或單元格,或行 - 絕對識別的東西)哪裏有按鍵事件。

我對jQuery相當陌生,所以我在構建我的選擇語句方面表現得相當平庸,我覺得這可能是一個很容易回答的問題,但我無法獲得信息正在尋找其他問題。謝謝你的耐心!

+0

你的代碼中的tKeyedBox是一個全局變量,我很確定你想使用本地變量:var tKeyedBox = this –

回答

3

挖一個更深層次在你選擇,只有當它壓在一個input

$(document).on('keypress', '#tblMasterTable input[type="text"]', DoMathForRow); 

this現在將參考您的input,而不是你的表中註冊的按鍵。

+0

這正是我所需要的。它工作得很漂亮!謝謝! – mkautzm

+0

@mkautzm - 太棒了,很高興我能幫到你!不要忘記將其標記爲已接受:)\ – tymeJV