仅从已更改的文本输入中收集值

时间:2010-11-01 07:14:16

标签: jquery forms textinput

我有一个html页面,在ajax调用后显示了大量数据行,在每一行中我都输入了不同值的文本,用户可以编辑这个文本输入,然后按一个按钮进行一些计算操作。

如何使用javascript(jQuery)仅收集已更改的值,并将它们发送到php脚本。我搜索一个简单的方法,不是为了保存所有大数值的旧值,然后与新值进行比较,是否有这样的解决方案?

3 个答案:

答案 0 :(得分:6)

您可以使用.data()函数保留其原始值的副本,然后在提交时将其与其值进行比较,以确保仅提交更改的值。

var inputs = $('input[type="text"]').each(function() {
    $(this).data('original', this.value);
});

$('#form').submit(function(){
    inputs.each(function() {
        if ($(this).data('original') !== this.value) {
            // Do something for the changed value
        } else {
            // And something else for the rest.
        }
    });
});

在此处查看此演示:http://www.jsfiddle.net/yijiang/twCE9/

答案 1 :(得分:1)

您可以使用输入字段的onChange事件,并在此隐藏字段或全局数组字段中收集信息。

答案 2 :(得分:1)

绑定到每个数据输入的change事件,并将这些名称 - 值对存储在全局数组中或隐藏的表单字段中。

另一种方法是将“已更改”类添加到已编辑的每个字段中。然后,当他们提交表单时,您可以创建一个新表单,只更改类的元素,或从表单中删除包含所有文本输入的其他元素。

<input type="text" class="data_input" name="name1" value="value1" />
<input type="text" class="data_input" name="name2" value="value2" />
...
<input type="text" class="data_input" name="nameX" value="valueX" />

然后在你的JS中

$(document).ready(function() {
    $(".data_input").change(function() {
        $(this).addClass('changed');
    });

或者如果您愿意使用全局数组:

var changedArr = [];
$(document).ready(function() {
    $(".data_input").change(function() {
        changedArr.push({'name': $(this).attr('name'), 'value': $(this).val()});
    });