JQuery - 通过$ .each循环查找表中的文本框值

时间:2012-03-22 08:59:44

标签: jquery textbox

我有一个HTML表...这个HTML表的第一行是静态的,当他们点击一个(+)按钮意味着,行将动态添加,用户想要删除一行意味着,他点击一个( - )按钮表示当前行被删除。

每行有4个文本框。我的Jquery代码在下面给出..

var FirstName;
var LastName;
var Email;
var PhoneNumber;
 $("#tableId tr").find('fieldset').each(function (i) { 
                    FirstName =FirstName +','+ $("#txtFirstName" + (i + 1) + "").val();
                    LastName =LastName +','+ $("#txtLastName" + (i + 1) + "").val();
                    Email =Email +','+ $("#txtEmail" + (i + 1) + "").val();
                    PhoneNumber = PhoneNumber+','+ $("#txtPhoneNumber" + (i + 1) + "").val();
                });

我设置文本框id是动态的,它工作正常,但是当用户删除一行意味着我无法获得基于Id的文本框值。

如何获取文本框值?

6 个答案:

答案 0 :(得分:5)

我正在使用索引访问四个文本字段。还将$ fieldset添加为上下文。

$("#tableId").find('tr fieldset').each(function (i) { 
    var $fieldset = $(this);
    FirstName =FirstName +','+ $('input:text:eq(0)', $fieldset).val();
    LastName =LastName +','+ $('input:text:eq(1)', $fieldset).val();
    Email =Email +','+ $('input:text:eq(2)', $fieldset).val();
    PhoneNumber = PhoneNumber+','+ $('input:text:eq(3)', $fieldset).val();
});

答案 1 :(得分:3)

假设您的表有点像这样:

​<table>
    <tr>
        <td>
            <input type="text" class="firstName" value="foo1">
            <input type="text" class="lastName" value="ba1r">
        </td>
    </tr>
    <tr>
        <td>
            <input type="text" class="firstName" value="foo2">
            <input type="text" class="lastName" value="bar2">
        </td>
    </tr>
</table​​​​​​​​​​​​​​​​​​​​​​​​​​>​​​​

here's a snippet可能有用(可能需要根据您的需要进行修改)

$(function() {

    //storage        
    var data = {
        firstName : [], lastName : []
    }

    //loop through the tr's
    $('table tr').each(function() {

        //look for the fields firstName and lastName in the tr
        //get their values and push into storage        
        data.firstName.push($('.firstName', this).val());
        data.lastName.push($('.lastName', this).val());
    });

    //view the data in the console
    console.log(data);

    //if you prefer the comma separated data
    var firstName = data.firstName.join(',');
    var lastName = data.lastName.join(',');
});​

答案 2 :(得分:1)

尝试像这样使用

获取价值
  $(this).find("input[id^='txtFirstName']").val()

答案 3 :(得分:0)

循环中的

$(this)将为您提供当前元素的句柄

答案 4 :(得分:0)

您可以使用以下选择器:

     $("input[type='input']")

或者将特定class应用于您想要的textboxes并搜索该内容。

答案 5 :(得分:0)

理想的解决方案是允许您按ID获取行,即使删除了一行。通过每次删除行时更新行的ID来执行此操作。