我试图在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;
}
});
代码无效。
答案 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
属性都会更新,但属性保持不变(除非它已明确更新)。
答案 1 :(得分:0)
改变这个:
$(this).data('somevalue', $(this).val());
到此:
$(this).attr('data-somevalue', $(this).val());
似乎可以做到这一点。
答案 2 :(得分:0)
我认为问题是你试图从点击处理程序返回一条消息,但是点击处理程序的返回值并不是在任何地方。如果您将消息放入页面中的div或其他实体,您将看到正在看到更改。 据我所知,click()方法没有任何有用的返回值。