亲爱的我在下面的代码中限制输入最大值
如果用户尝试手动更改它,则效果很好
但是如果更改是通过jquery动态发生的,则它不起作用
$( "#materials" ).on('change','select',function(e){
var value = $(this).val();
if ((value !== '') && (value.indexOf('.') === -1)) {
$(this).val(Math.max(Math.min(value, 3), 0)); // it's set the input value t 3 as max value
}
});
$( "#materials" ).val(300); // it's changing the value alawys
因此,最后一行将输入更改为300,但是如果用户不能将其设置为3以上
那么,即使有动态更改,我怎么也不能拒绝任何值的更改
答案 0 :(得分:1)
您应在设置值$( "#materials" ).val(300).trigger('change');
答案 1 :(得分:-1)
我可能是不正确的,但是我不相信.val()
会触发“更改”事件(保留给用户交互)。
您可能需要做的就是将验证器功能移至setInterval()
上,如下所示:
setInterval(() => {
let input = $("#materials");
let value = input.val();
if ((value !== '') && value.indexOf('.') === -1) {
input.val(Math.max(Math.min(value, 3), 0));
}
}, 0);
这是导致验证逻辑在每个事件循环中对ID为“ materials”的所有元素运行一次。