未检测到输入值更改
Input value change not detected
var input = $('input[type="number"]', this);
$('.inc').on('click', function(){
input.val( parseFloat(input.val()) + parseFloat(0.5));
});
...正确增加输入的值。但是,我无法通过以下方式获得 change
事件:
$('input[type="number"]').on('propertychange change keyup input paste', function(){
console.log('change');
});
我做错了什么?
您也需要触发 change
,因为默认情况下以编程方式设置的值不会触发任何事件。
var input = $('input[type="number"]', this);
$('.inc').on('click', function(){
input.val(parseFloat(input.val()) + parseFloat(0.5)).trigger("change");
});
除此之外,您需要先声明 updateTotal
函数,然后才能在事件侦听器创建中使用它。
var updateTotal = function() {
console.log('change');
}
$('.hours input[type="number"]').on('change', updateTotal);
或者声明一个命名函数:
$('.hours input[type="number"]').on('change', updateTotal);
function updateTotal() {
console.log('change');
}
或者直接使用匿名函数:
$('.hours input[type="number"]').on('change', function() {
console.log('change');
});
更改值后始终可以调用函数:
var input = $('input[type="number"]', this);
$('.inc').on('click', function(){
input.val( parseFloat(input.val()) + parseFloat(0.5));
do_something();
});
function do_something() {
console.log('change');
}
当然你也必须更改此代码,以在一个函数中执行所有操作:
$('input[type="number"]').on('propertychange change keyup input paste', function(){
do_something();
});
我想到的另一件事如下,虽然没有测试:
$('.inc').on('click', function(){
input.val( parseFloat(input.val()) + parseFloat(0.5)).trigger('change');
});
var input = $('input[type="number"]', this);
$('.inc').on('click', function(){
input.val( parseFloat(input.val()) + parseFloat(0.5));
});
...正确增加输入的值。但是,我无法通过以下方式获得 change
事件:
$('input[type="number"]').on('propertychange change keyup input paste', function(){
console.log('change');
});
我做错了什么?
您也需要触发 change
,因为默认情况下以编程方式设置的值不会触发任何事件。
var input = $('input[type="number"]', this);
$('.inc').on('click', function(){
input.val(parseFloat(input.val()) + parseFloat(0.5)).trigger("change");
});
除此之外,您需要先声明 updateTotal
函数,然后才能在事件侦听器创建中使用它。
var updateTotal = function() {
console.log('change');
}
$('.hours input[type="number"]').on('change', updateTotal);
或者声明一个命名函数:
$('.hours input[type="number"]').on('change', updateTotal);
function updateTotal() {
console.log('change');
}
或者直接使用匿名函数:
$('.hours input[type="number"]').on('change', function() {
console.log('change');
});
更改值后始终可以调用函数:
var input = $('input[type="number"]', this);
$('.inc').on('click', function(){
input.val( parseFloat(input.val()) + parseFloat(0.5));
do_something();
});
function do_something() {
console.log('change');
}
当然你也必须更改此代码,以在一个函数中执行所有操作:
$('input[type="number"]').on('propertychange change keyup input paste', function(){
do_something();
});
我想到的另一件事如下,虽然没有测试:
$('.inc').on('click', function(){
input.val( parseFloat(input.val()) + parseFloat(0.5)).trigger('change');
});