未检测到输入值更改

时间:2016-08-10 08:31:47

标签: jquery onchange

//Last 3 Inserted
$data = getData(3);
//All Data
$data = getData();

...正确递增输入值。但是,我无法通过以下方式获取var input = $('input[type="number"]', this); $('.inc').on('click', function(){ input.val( parseFloat(input.val()) + parseFloat(0.5)); }); 事件:

change

我在这里做错了什么?

https://jsfiddle.net/cf5vhb2c/

2 个答案:

答案 0 :(得分:3)

您也需要触发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');
});

<强> Working example.

答案 1 :(得分:-1)

您可以在更改值后始终调用函数:

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');
});