Jquery on Input无法动态插入值

时间:2014-02-14 10:33:12

标签: javascript jquery input alert

我正在尝试使用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在执行后无法检测到它。

示例小提琴http://jsfiddle.net/SU7bU/1/

3 个答案:

答案 0 :(得分:2)

为其添加触发器

$('#gen').on('click',function() {
    $('#field').val('val').trigger("change");
});


$(document).on("change",'#field' ,function() {
    var work = $(this).val();
    alert(work);

});

http://jsfiddle.net/ytexj/

答案 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