【问题标题】:Jquery get and set ValueJquery 获取和设置值
【发布时间】:2016-09-16 02:24:33
【问题描述】:

我有这段代码可以从 td 获取值并将其传递给其他 mvc 视图。但不知何故我无法获得隐藏类属性的值?

<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());

【问题讨论】:

  • 我假设您的意思是eq(3),而不是text(3),但无论如何&lt;td&gt; 没有text() - 您需要找到&lt;input&gt; 并使用它的@987654328 @。但您的代码建议您有多个输入 id="UserId" 这是无效的 html。但是为什么要隐藏输入而不是 &lt;td&gt;@ul.Id&lt;/td&gt;

标签: javascript c# jquery asp.net-mvc-4


【解决方案1】:

这段代码.text(3),是坏人!

text 方法没有采用数组索引的重载!。所以那行代码应该会崩溃!

使用带索引的 eq 方法来获取项目不是很安全。如果明天你在中间添加一个新的 td,现在你必须使用 eq 方法调用来修复一堆索引值怎么办!

为什么不使用指定名称属性值的选择器呢?同样对于输入字段,您需要使用val()方法获取值。

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

恕我直言,您可以为 td 提供一个 css 类,并将其用于您的 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    
  });    
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多