2016-10-12 57 views
0

我有一个输入字段,其中的值是使用模式填充的,当我单击一个按钮时,模式将出现,我将选择一些内容并填充输入字段。检查输入字段的值是否改变

现在我的问题是,我想触发一个事件,只要我的输入字段的值发生变化。我已经尝试使用.change和.blur,但它不会触发。

这是我尝试:

$('#myTextbox').on('input', function() { 
    alert("test"); 
}); 

$('#myTextbox').on('change', function() { 
    alert("test"); 
}); 

$('#myTextbox').on('blur', function() { 
    alert("test"); 
}); 
+1

那么你如何改变输入值?如果使用代码进行设置,则需要手动触发事件 –

+0

@ A.Wolff手动指定事件是什么意思?对不起,这是我第一次听到 – hungrykoala

+2

,例如:'$('#myTextbox')。val('something')。trigger('input');'所以实际上我的意思是编程而不是手动。但是如果你提供了简单的样本复制问题本身,你的问题已经得到解决。这至少可以避免许多混淆,因为它不是很清楚你问的是 –

回答

2

使用event delegation

你的问题说,你输入字段是动态生成的。因此,当页面准备就绪时,它不在DOM中。

$('body').on('blur', '#myTextbox', function() { 
    alert("test"); 
}); 

仅供参考,您也可以使用change

编辑

一个解决方案,您可以使用setTimeout直到你的文本框获取值填充。

OR

您可以DOMAttrModified

$('body').on('DOMAttrModified propertychange paste', '#myTextbox', function() { 
    alert("test"); 
}); 

Reference

+1

在输入更改时未触发'blue'事件。你应该使用'change'事件。 – Mohammad

+1

我不认为这是OP的问题。我猜他改变输入值从一些模态输入 –

+0

我很抱歉让你困惑,价值是使用js而不是它自己的领域 – hungrykoala

1
$(document).ready(function() { 
    $('#myTextbox').on('blur', function() { 
     alert("test"); 
    }); 
}); 

OR 

$(document).ready(function() { 
    $('#myTextbox').on('change', function() { 
     alert("test"); 
    }); 
}); 
+0

它已经在文档里面准备好了,它仍然没有被触发。谢谢 – hungrykoala

0

尝试尝试使用这样的,可能是你的input场在运行时被填充,这就是为什么事件没有发射。

$(document).on('change blur keyup', '#myTextbox', function() { 
    alert("test"); 
}); 

您可以在一个.on()方法中绑定所有事件。没有必要写无数次。