我正在尝试使用jquery从javascript代码生成一个值,在输入框中生成值,问题是jquery无法检测到更改,我测试的命令是“更改,输入”但是当我手动输入值jquery触发器
示例代码:
值是在javascript上动态生成并推送/插入到输入框中,该值不是手动生成的 的的javascript:
document.getElementById("displayDID").value = DisplayName ;
HTML:
<input type="text" id="displayDID" />
jquery的:
$('#displayDID').on("input" ,function() {
var work = $(this).val();
alert(work);
});
id =“displayDID”的值发生了变化,但jquery在执行后无法检测到它。
答案 0 :(得分:2)
为其添加触发器
$('#gen').on('click',function() {
$('#field').val('val').trigger("change");
});
$(document).on("change",'#field' ,function() {
var work = $(this).val();
alert(work);
});
答案 1 :(得分:1)
这是因为你在输入准备就绪之前已经添加了脚本。但是,在该元素上没有设置事件。编写文档准备好的代码:
$(document).ready(function(){
$('#displayDID').on("input" ,function() {
var work = $(this).val();
alert(work);
});
})
或使用事件委托:
$(document).on("input",'#displayDID' ,function() {
var work = $(this).val();
alert(work);
});
答案 2 :(得分:0)
好的我会给你一个答案,让我们看看它是否能解决你的问题。 如果您使用键盘,并且插入3350值,您将显示4个警报,我认为您只想显示1个警报。
$(document).ready(function() {
var interval;
$("#variazioneAnticipo").on("input", function() {
var variazioneAnticipo = $("#variazioneAnticipo").val();
clearInterval(interval);
interval = setTimeout(function(){ showValue(variazioneAnticipo) }, 1000);
});
});
function showValue(value) {
alert("ANTICIPO VARIATO: " + value);
}
<input id="variazioneAnticipo" class="rightAlligned form-control" style="width: 60%" type="number" step="0.01" min="0" value="3" />
我解释一下,当你在输入中输入任何东西时,会在1秒内触发一个setTimeout,如果你在这段时间内按下另一个键,我们清除timeOut并再次触发,所以你只有1个警报1秒在最后一次输入插入之后。
我希望它对你有所帮助,并为我的英语提供帮助:D