jQuery 检查输入值 increases/decreases 是否改变
jQuery check if input value increases/decreases on change
我有一个输入类型数字
<input type="number" value="5" id="nmovimentos"/>
我想在值增加或减少时执行特定操作(提醒一个更简单的示例)。
我有以下 jQuery 代码:
$(document).ready(function(){
var oldValue = $("#nmovimentos").val();
$("#nmovimentos").change(function(){
var newValue = $(this).val();
if (newValue > oldValue)
alert("increase!");
else
alert("decrease!");
});
});
但它不起作用,因为它无法检测到 oldValue 变量..那么关于如何做到这一点的任何线索?非常感谢!
更新处理程序中的 oldValue
$(document).ready(function() {
var oldValue = $("#nmovimentos").val();
$("#nmovimentos").change(function() {
var newValue = $(this).val();
if (newValue > oldValue)
console.log("increase!");
else
console.log("decrease!");
oldValue = newValue;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<input type="number" value="5" id="nmovimentos" />
或,使用data-*
属性来跟踪
$(document).ready(function() {
$("#nmovimentos").attr('data-prev-val', $("#nmovimentos").val());
$("#nmovimentos").change(function() {
var newValue = $(this).val();
if (newValue > $(this).attr('data-prev-val'))
console.log("increase!");
else
console.log("decrease!");
$("#nmovimentos").attr('data-prev-val', newValue);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<input type="number" value="5" id="nmovimentos" />
您必须先将旧值保存在某个地方。 jQuery.data()
这很方便。
$(document).ready(function(){
var nmovimentos = $("#nmovimentos");
var oldValue = nmovimentos.val();
nmovimentos.data("oldValue", oldValue);
$("#nmovimentos").change(function(){
var oldValue = $(this).data("oldValue");
var newValue = $(this).val();
if (newValue > oldValue)
alert("increase!");
else
alert("decrease!");
$(this).data("oldValue", newValue);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="number" value="5" id="nmovimentos"/>
您可以使用一些 属性 每个 HTMLInputElement 都必须存储以前的值,例如 defaultValue
。在这种情况下,您可以节省几行代码,并使代码更简洁:
$("#nmovimentos").change(function () {
var direction = this.defaultValue < this.value
this.defaultValue = this.value;
if (direction) alert("increase!");
else alert("decrease!");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" value="5" id="nmovimentos" />
我有一个输入类型数字
<input type="number" value="5" id="nmovimentos"/>
我想在值增加或减少时执行特定操作(提醒一个更简单的示例)。
我有以下 jQuery 代码:
$(document).ready(function(){
var oldValue = $("#nmovimentos").val();
$("#nmovimentos").change(function(){
var newValue = $(this).val();
if (newValue > oldValue)
alert("increase!");
else
alert("decrease!");
});
});
但它不起作用,因为它无法检测到 oldValue 变量..那么关于如何做到这一点的任何线索?非常感谢!
更新处理程序中的 oldValue
$(document).ready(function() {
var oldValue = $("#nmovimentos").val();
$("#nmovimentos").change(function() {
var newValue = $(this).val();
if (newValue > oldValue)
console.log("increase!");
else
console.log("decrease!");
oldValue = newValue;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<input type="number" value="5" id="nmovimentos" />
或,使用data-*
属性来跟踪
$(document).ready(function() {
$("#nmovimentos").attr('data-prev-val', $("#nmovimentos").val());
$("#nmovimentos").change(function() {
var newValue = $(this).val();
if (newValue > $(this).attr('data-prev-val'))
console.log("increase!");
else
console.log("decrease!");
$("#nmovimentos").attr('data-prev-val', newValue);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<input type="number" value="5" id="nmovimentos" />
您必须先将旧值保存在某个地方。 jQuery.data()
这很方便。
$(document).ready(function(){
var nmovimentos = $("#nmovimentos");
var oldValue = nmovimentos.val();
nmovimentos.data("oldValue", oldValue);
$("#nmovimentos").change(function(){
var oldValue = $(this).data("oldValue");
var newValue = $(this).val();
if (newValue > oldValue)
alert("increase!");
else
alert("decrease!");
$(this).data("oldValue", newValue);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="number" value="5" id="nmovimentos"/>
您可以使用一些 属性 每个 HTMLInputElement 都必须存储以前的值,例如 defaultValue
。在这种情况下,您可以节省几行代码,并使代码更简洁:
$("#nmovimentos").change(function () {
var direction = this.defaultValue < this.value
this.defaultValue = this.value;
if (direction) alert("increase!");
else alert("decrease!");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" value="5" id="nmovimentos" />