在我的html结构中,我有加号,减号和输入字段。当我的输入字段发生任何变化时,我想提醒“发生变化”。因此,当我通过键入或使用向上或向下箭头更改输入框中的值时,它会向我发出警报。但是当我点击带有加号或减号的锚标签时,我已经写了一些代码来改变输入字段的值。因此,当我使用锚标签但是没有触发更改功能时,值会发生变化。因此没有得到任何警报。所以,任何人都可以让我知道为什么改变不起作用。
HTML :
<div class="quantity">
<a href="javascript:void(0)" class="minus">-</a>
<input type="number" step="1" name="quantity" value="2" title="Qty" class="input-text qty text" size="4">
<a href="javascript:void(0)" class="plus">+</a>
</div>
JQuery:
$(".plus").click(function() {
var text = $(this).prev("input");
var va = parseInt(text.val(), 10) + 1;
text.attr('value',parseInt(text.val(), 10) + 1);
});
$(".minus").click(function() {
var text = $(this).next("input");
if(text.val() > 0){
var va = parseInt(text.val(), 10) - 1;
text.attr('value',parseInt(text.val(), 10) - 1);
}
});
jQuery检测输入的变化:
jQuery(document).ready(function($) {
$(document).on( 'change', '.quantity .qty', function() {
alert('change occurred');
});
});
我尝试了什么
我已经尝试过:.trigger('change')并且还使用了keyup和input但没有任何帮助。
答案 0 :(得分:2)
以编程方式更新元素值时,不会触发change
事件。在这种情况下,您需要手动触发事件:
$(".plus").click(function() {
var $text = $(this).prev("input");
var value = parseInt($text.val(), 10) + 1;
$text.val(value).change();
});
$(".minus").click(function() {
var $text = $(this).next("input");
var value = parseInt($text.val(), 10) - 1;
$text.val(Math.max(0, value)).change();
});
请注意,在使用val()
类型时,使用input
而不是设置attr()
,这被认为是更好的做法。
答案 1 :(得分:1)
<强> FIDDLE 强>
更改您的代码如下。您需要trigger()
.change()
事件。
$(".plus").click(function() {
var text = $(this).prev("input");
var va = parseInt(text.val(), 10) + 1;
text.attr('value',parseInt(text.val(), 10) + 1);
text.trigger("change");
});
$(".minus").click(function() {
var text = $(this).next("input");
if(text.val() > 0){
var va = parseInt(text.val(), 10) - 1;
text.attr('value',parseInt(text.val(), 10) - 1);
}
text.trigger("change");
});
答案 2 :(得分:0)
试试这个..
开始观察'input'事件而不是'change'。
jQuery('#some_text_box').on('input propertychange paste', function() {
// do your stuff
});
或强>
@WebFilter(filterName = "SessionFilter", urlPatterns = {"/*"})
public class SessionFilter implements Filter {...}