获取已更改输入框的值

时间:2014-11-03 20:16:39

标签: jquery html jquery-data

我试图在div中获取更改的值并在控制台上显示它们,这是我到目前为止的代码,但它没有显示任何内容。

    <div id="mainDiv">
        <input type="text" id="myID" value="1" />
        <input type="text" id="myID" value="2" />
        <input type="text" id="myID" value="3" />
        <input type="text" id="myID" value="4" />
        <input type="text" id="myID" value="5" />
    </div>

    <button id="getText">Submit</button>

这是我的JS功能

    $('#mainDiv input[type="text"]').each(function () {
        $(this).data('somevalue', $(this).val());
    });


    $('#getText').click(function () {
        var msg = 'You haven\'t saved your changes.';
        var isTrue = false;

        $('#mainDiv input[type="text"]').each(function () {
            if ($(this).data('somevalue') != $(this).val()) {
                isTrue = true;
                // Display only changed items on console ...
            }
        });

        if (isTrue == true) {
            return msg;
        }
    });

代码无效。

如果有帮助,这是http://jsfiddle.net/JQPurfect/xcej3rav/

3 个答案:

答案 0 :(得分:1)

要检查该值是否已变,您可以将当前value属性与value属性进行比较:

$('#mainDiv input[type="text"]').each(function () {
    if ($(this).attr('value') != this.value) {
        isTrue = true;
        // Display only changed items on console ...
        console.log(this.value)
    }
});

在这种情况下,您甚至不必记住数据属性中的任何内容。它的工作原理是因为值属性保存了最初输入的默认值。每当您更改输入的值时,其value属性都会更新,但属性保持不变(除非它已明确更新)。

演示:http://jsfiddle.net/xcej3rav/3/

答案 1 :(得分:0)

改变这个:

$(this).data('somevalue', $(this).val());

到此:

$(this).attr('data-somevalue', $(this).val());

似乎可以做到这一点。

答案 2 :(得分:0)

我认为问题是你试图从点击处理程序返回一条消息,但是点击处理程序的返回值并不是在任何地方。如果您将消息放入页面中的div或其他实体,您将看到正在看到更改。 据我所知,click()方法没有任何有用的返回值。