所以,我有这个功能来检查.blur触发的CEP(zipcode),这个功能在从控制台触发时效果很好但是在通过外部.js导入时不会运行。这是代码:
$('#inputs').on('blur', '#i11', function(){
var cep = $("#i11").val().replace(/\D/g, '');
if (cep != "") {
var validacep = /^[0-9]{8}$/;
if(validacep.test(cep)) {
$.getJSON("//viacep.com.br/ws/"+ cep +"/json/?callback=?", function(dados) {
if (!("erro" in dados)) {
newInput({id: "i13", value: dados.logradouro, type: "hidden"}, '#cacheDB');
newInput({id: "i14", value: dados.bairro, type: "hidden"}, '#cacheDB');
newInput({id: "i15", value: dados.localidade, type: "hidden"}, '#cacheDB');
newInput({id: "i16", value: dados.uf, type: "hidden"}, '#cacheDB');
} else {
formGrabber("#content", loadSequence($("#pid").val()));
}
});
}
}
});
编辑: 嗯......似乎原因是#i11字段是在页面中动态加载的,所以我已经将问题更新为更合适的字段。
编辑2:按照https://stackoverflow.com/a/1207393/5855060上的说明更新了代码 仍然没有工作
答案 0 :(得分:0)
添加console.log('Hello world');在第2行,在jQuery(function(){
之后看到您的代码正在运行。
如果您的内容是动态加载的,$("#i11")
将返回一个空对象。您可以使用console.log($("#i11"));
进行检查。如果是这种情况,您可以将模糊分配给任何内容。相反,如果您动态加载内容,则应在将事件加载到dom之后绑定事件,而不是之前。
解决方法强>
在jQuery中有一个名为.live()的函数,但它被删除而转而支持.on(),其中.blur()是一个快捷方式。从documentation开始,您可以通过将其绑定到document
来获得与.live()相同的结果,并使用以下代码:
$( document ).on( "blur", "#i11", function() {
// ...
}
这称为委派事件。更具体地说,您可以使用容器而不是document
,但它必须存在于页面加载中。您可以在documentation of .on()
答案 1 :(得分:0)
所以,我已经解决了这个:https://stackoverflow.com/a/1207393/5855060。无论如何都要留在这里作为参考。
$(function(){
$('#inputs').on('blur', '#i11', function(){
alert('funciona')
var cep = $("#i11").val().replace(/\D/g, '');
if (cep != "") {
var validacep = /^[0-9]{8}$/;
if(validacep.test(cep)) {
$.getJSON("//viacep.com.br/ws/"+ cep +"/json/?callback=?", function(dados) {
if (!("erro" in dados)) {
newInput({id: "i13", value: dados.logradouro, type: "hidden"}, '#cacheDB');
newInput({id: "i14", value: dados.bairro, type: "hidden"}, '#cacheDB');
newInput({id: "i15", value: dados.localidade, type: "hidden"}, '#cacheDB');
newInput({id: "i16", value: dados.uf, type: "hidden"}, '#cacheDB');
} else {
formGrabber("#content", loadSequence($("#pid").val()));
}
});
}
}
});
});