2016-09-16 16 views
0

私はtdから値を取得し、他のmvcビューに渡すことができるこのコードを持っています。しかし、どういうわけか、私は隠しクラスのプロパティの値を取得できませんか?Jquery getおよびset値

<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

を処理するスクリプト'text()'を持っていれば ''を見つけ、 '.val()'を使う必要があります。あなたのコードでは、 'id =" UserId "'が無効なhtmlである複数の入力があることを示唆しています。しかし、なぜ、ちょうど '​​@ ul.Id'の代わりに隠れた入力を持っていますか? –

答えて

2

コード.text(3)のこの作品は、悪い男です!

textメソッドには、配列インデックスを使用するオーバーロードがありません。そのコード行がクラッシュするように!

インデックスを持つeqメソッドを使用して項目を取得することはあまり安全ではありません。明日中に新しいtdを1つ追加すれば、eqメソッド呼び出しで多数のインデックス値を修正する必要があります。

名前属性値を指定するセレクタを使用しないのはなぜですか?また、入力フィールドの場合は、val()メソッドを使用して値を取得する必要があります。

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

IMHO、ヨーヨーは、TDのためにCSSクラスを与え、代わりにインデックスに頼るのあなたのjQueryの選択のためにそれを使用することができます。また、あなたは控えめな方法であなたのJavaScriptを行うことを検討することがあります。私はあなたが `EQ(3)`ではなく `テキスト(3)`が、 `​​は`ないことをどのような場合での平均想定し

<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  
    });  
}); 
関連する問題