2016-09-16 37 views
0

我有這個代碼,可以從td獲取值並將其傳遞給其他mvc視圖。但不知何故,我不能得到隱藏類屬性的值?Jquery得到並設置值

<tr onclick="textover(this)"> 
     <td> 
      @ul.Email 
     </td> 
     <td> 
      @ul.Fullname 
     </td> 
     <td> 
      @ul.Company.Name    
     </td> 
     <td class="hidden"> 
      <input type="hidden" name="UserId" id="UserId" value="@ul.Id" /> 
     </td> 

jQuery的

function textover(id) { 
    $('#Email').val($(id).find("td").eq(0).text().trim()); 
    $('#Fullname').val($(id).find("td").eq(1).text().trim()); 
    $('#Company').val($(id).find("td").eq(2).text().trim()); 
    $('#IdNo').val($(id).find("td").text(3).trim()); 
+0

我假定你的意思'EQ(3)',而不是'文字(3)',但在任何情況下'​​'不有一個'text()' - 你需要找到''並使用它的'.val()'。但是你的代碼建議你有'id =「UserId」'這是無效的html的多個輸入。但爲什麼有一個隱藏的輸入,而不是隻是'​​@ ul.Id'? –

回答

2

這段代碼.text(3),是壞人!

text方法沒有一個超載,它接受數組索引!所以這行代碼應該崩潰!

使用帶索引的eq方法獲取項目並不是很安全。如果明天你在中間添加一個新的td,現在你必須用eq方法調用修復一堆索引值!

爲什麼不使用指定名稱屬性值的選擇器?同樣對於輸入字段,您需要使用val()方法獲取該值。

var userId = $(id).find("input[name='UserId']").val(); 
alert(userId); 
$('#IdNo').val(userId); 

恕我直言,喲可以給一個CSS類到TD的,並使用您的jQuery選擇,而不是依靠指標。你也可以考慮以不引人注目的方式做你的javascript。

<tr class="selectableRow"> 
     <td class="email"> @ul.Email</td> 
     <td class="fullName"> @ul.Fullname </td> 
     <td class="companyName"> @ul.Company.Name 
      <input type="hidden" name="UserId" id="UserId" value="@ul.Id" /> 
     </td> 
</tr> 

和腳本來處理該行單擊事件

$(function(){ 
    $("tr.selectableRow").click(function(e){  
     var email = $(this).find(".email").val(); 
     var fullName = $(this).find(".fullName").val(); 
     // do something with these  
    });  
});