删除时的最后一个 keyup 事件未触发 jquery
Last keyup event on delete not fired jquery
我对 "keyup" 事件有一个奇怪的行为:
当我用某些东西填写输入字段时,然后删除该值,无法识别最后一次删除 keyup 事件。
示例代码:
$('#input').on('keyup',function(){
if($(this).val().length > 0){
$('#text').html($(this).val())
}
});
Fiddle HERE
任何解决方案或为什么会出现这种奇怪的行为?
只需将比较器从 >
改为 >=
即可。
$('#input').on('keyup',function(){
if($(this).val().length >= 0){
$('#text').html($(this).val())
}
});
更新
根据fiddle the solution can be based on jQuery data中描述的新问题:
$(function () {
$('#input-deposit').on('keyup', function (e) {
if ($(this).val().length >= 0) {
$('#text').html($(this).val())
}
});
// set the default of previousValue
$('#input-deposit').data('previousValue', 0);
$('#input-deposit').on('keyup', function (e) {
var t = 2000;
if (!isNaN(this.value) && this.value.length != 0) {
// get the previous value
var previousValue = parseFloat($('#input-deposit').data('previousValue'));
var total = parseFloat($('#input-balance').val());
var deposit = parseFloat($(this).val());
$('#input-deposit').data('previousValue', deposit);
// use previousValue
t = total + previousValue - deposit;
} else {
// reset previousValue
$('#input-deposit').data('previousValue', 0);
}
$('#input-balance').val(t.toFixed(2));
});
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<label>Deposit</label>
<input type="text" value="" id="input-deposit"/>
<label>Balance</label>
<input type="text" value="2000" id="input-balance"/>
<div id="text"></div>
问题是:
if($(this).val().length > 0){
这必须是:
if($(this).val().length >= 0){
片段:
$(function () {
$('#input').on('keyup',function(){
if($(this).val().length >= 0){
$('#text').html($(this).val())
}
});
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<input type="text" value="" id="input"/>
<div id="text"></div>
我对 "keyup" 事件有一个奇怪的行为: 当我用某些东西填写输入字段时,然后删除该值,无法识别最后一次删除 keyup 事件。
示例代码:
$('#input').on('keyup',function(){
if($(this).val().length > 0){
$('#text').html($(this).val())
}
});
Fiddle HERE
任何解决方案或为什么会出现这种奇怪的行为?
只需将比较器从 >
改为 >=
即可。
$('#input').on('keyup',function(){
if($(this).val().length >= 0){
$('#text').html($(this).val())
}
});
更新
根据fiddle the solution can be based on jQuery data中描述的新问题:
$(function () {
$('#input-deposit').on('keyup', function (e) {
if ($(this).val().length >= 0) {
$('#text').html($(this).val())
}
});
// set the default of previousValue
$('#input-deposit').data('previousValue', 0);
$('#input-deposit').on('keyup', function (e) {
var t = 2000;
if (!isNaN(this.value) && this.value.length != 0) {
// get the previous value
var previousValue = parseFloat($('#input-deposit').data('previousValue'));
var total = parseFloat($('#input-balance').val());
var deposit = parseFloat($(this).val());
$('#input-deposit').data('previousValue', deposit);
// use previousValue
t = total + previousValue - deposit;
} else {
// reset previousValue
$('#input-deposit').data('previousValue', 0);
}
$('#input-balance').val(t.toFixed(2));
});
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<label>Deposit</label>
<input type="text" value="" id="input-deposit"/>
<label>Balance</label>
<input type="text" value="2000" id="input-balance"/>
<div id="text"></div>
问题是:
if($(this).val().length > 0){
这必须是:
if($(this).val().length >= 0){
片段:
$(function () {
$('#input').on('keyup',function(){
if($(this).val().length >= 0){
$('#text').html($(this).val())
}
});
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<input type="text" value="" id="input"/>
<div id="text"></div>