【问题标题】:Jquery on Input not working on dynamically inserted value输入上的Jquery不适用于动态插入的值
【发布时间】:2014-03-13 16:06:06
【问题描述】:

我正在尝试使用 jquery 警告从 javascript 代码生成的值,该值是在输入框中生成的问题是 jquery 无法检测到更改,我测试的命令是“更改,输入”但是当我手动输入一个值 jquery triggers

示例代码:

value是在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/

【问题讨论】:

  • 它工作正常:jsfiddle.net/paRPL/1
  • 如果你想提醒每一个变化,如何将“输入”更改为“keyup”,或者如果你想在聚焦后提醒变化,那么如何将“更改”更改为“更改”
  • 它在手动输入时可以正常工作,但是当从 javascript 推送值时就不行
  • 试试这个:$('#displayDID').val('some value').change(); - 这应该会触发你的 onchange 事件。
  • 我认为这就是您要寻找的:jsfiddle.net/LGAWY/141 有关此链接的更多信息,请参阅 Davids 回答:stackoverflow.com/questions/1443292/…

标签: javascript jquery input alert


【解决方案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);
    });

【讨论】:

  • 仍然没有触发 jquery
  • 你能制作小提琴吗??
【解决方案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/

【讨论】:

  • 请看说明,不是手动触发的,是系统触发的。
【解决方案3】:

好的,我会给你一个答案,让我们看看它是否能解决你的问题。 如果您使用 keyup,并且您插入 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);
}
&lt;input id="variazioneAnticipo" class="rightAlligned form-control" style="width: 60%" type="number" step="0.01" min="0" value="3" /&gt;

我解释一下,当你在输入中输入任何东西时,会在 1 秒内触发一个 setTimeout,如果你在这个时间下按另一个键,我们会清除 timeOut 并再次触发,所以你将只有 1 个警报 1 秒在最后一个输入插入之后。

我希望它对你有帮助,并且对我的英语有所帮助:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多