问:如何在从onkey事件更改val时触发事件?
问题:更改一个输入时,其他会更改值,但不要更改css。
JsFiddle:http://jsfiddle.net/6Qnbh/
$('.stat').val(0);
$(".stat").change(function () {
var val = $(this).val();
if (val > 0) {
$(this).css("border", "1px solid #0f0");
} else if (val < 0) {
$(this).css("border", "1px solid #f00");
} else {
$(this).css("border", "1px solid #000");
}
}).trigger("change");
/**/
$('.stat').keyup(function () {
var val = $(this).val();
if (val > 0) {
var num = Math.abs(val) * -1;
} else {
var num = Math.abs(val) * 1;
}
$('input[data-id=' + $(this).attr("data-link") + ']').val(num);
});
答案 0 :(得分:3)
在这一行
$('input[data-id=' + $(this).attr("data-link") + ']').val(num);
添加.trigger("change");
以确保触发change
事件:
$('input[data-id=' + $(this).attr("data-link") + ']').val(num).trigger("change");
小提琴:
答案 1 :(得分:1)
您需要在设置值后触发更改事件。查看您的updated fiddle
$(function () {
$('.stat').val(0);
$(".stat").change(function () {
var val = $(this).val();
if (val > 0) {
$(this).css("border", "1px solid #0f0");
} else if (val < 0) {
$(this).css("border", "1px solid #f00");
} else {
$(this).css("border", "1px solid #000");
}
}).trigger("change");
/**/
$('.stat').keyup(function () {
var val = $(this).val();
if (val > 0) {
var num = Math.abs(val) * -1;
} else {
var num = Math.abs(val) * 1;
}
// I have added the .trigger('change') part here
$('input[data-id=' + $(this).attr("data-link") + ']').val(num).trigger('change');
});
});
答案 2 :(得分:0)
在您的代码中,$(this)引用当前更改的jQuery对象。 一个简单的解决方案是:
$(".stat").change(function () {
var val = $(this).val();
if (val > 0) {
$('.stat').css("border", "1px solid #0f0");
} else if (val < 0) {
$('.stat').css("border", "1px solid #f00");
} else {
$('.stat').css("border", "1px solid #000");
}
编辑:根据你想要发生的事情,@ Anton可能会产生你想要的效果;我不确定你需要什么 至于其他输入框没有变化的原因,说明仍然相同。
答案 3 :(得分:0)
function test(){
$(".stat").each(function () {
var val = $(this).val();
if (val > 0) {
$(this).css("border", "1px solid #0f0");
} else if (val < 0) {
$(this).css("border", "1px solid #f00");
} else {
$(this).css("border", "1px solid #000");
}
})
}
并在keyup上调用该函数