2016-09-16 54 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  
    });  
});