Javascript 如何将json中的自动填充功能用于动态创建的输入?
我正在使用这个自动填充函数,它从输入的Javascript 如何将json中的自动填充功能用于动态创建的输入?,javascript,json,dynamic,Javascript,Json,Dynamic,我正在使用这个自动填充函数,它从输入的descripaoitem(description)中获取一个值,将其发送到查询,并用数据库中的codigo(code)值填充另一个输入字段。代码如下: $(文档).ready(函数(){ $('#descripaItem0')。更改(函数(){ $.post('mandaDescricao.php', { descripcao:document.getElementById('descripaItem0')。值 }, 功能(数据){ var ob
descripaoitem(description)
中获取一个值,将其发送到查询,并用数据库中的codigo(code)
值填充另一个输入字段。代码如下:
$(文档).ready(函数(){
$('#descripaItem0')。更改(函数(){
$.post('mandaDescricao.php',
{
descripcao:document.getElementById('descripaItem0')。值
},
功能(数据){
var obj=$.parseJSON(数据);
$('#codigoItem0').val(obj.codigo);
});
});
});
这个很好,但我想在用户按下按钮时动态创建这些输入。已经具有此功能,并且使用与(codigoItem0
,codigoItem1
等…)相关的不同ID创建输入(codigoItem0
,codigoItem1
,…)。但是,由于这些动态创建的输入,我找不到使用上述函数的方法
你能帮帮我吗?我不想复制并粘贴此函数,直到
descripaoitem20
将事件赋值器包装到函数中!
每次添加新输入时,启动此函数并传递正确的id号
函数赋值更改输入(id){
$('#descripaoitem'+id).change(function(){
$.post('mandaDescricao.php'{
descripcao:document.getElementById('descripaItem'+id).value
},
功能(数据){
var obj=$.parseJSON(数据);
$('#codigoItem'+id).val(obj.codigo);
});
});
});
}
[{id:'#codigoItem0'},{id:'#codigoItem1'},{id:'#codigoItem2'}]
var JSONObj=[{id:'#codigoItem0'},{id:'#codigoItem1'},{id:'#codigoItem2'}]
forEach(函数(输入){
var id=input.id;
$(id).更改(功能(e){
$.post('mandaDescricao.php',
{
descripcao:document.getElementById(id).value
},
功能(数据){
var obj=$.parseJSON(数据);
$(id).val(obj.codigo);
});
});
})
})
可能值得制作一个更详细的JSON输入数组,其中输入对象可能如下所示:
{
id:'输入',
名称:“inputName”
瓦尔:“福”,
占位符:“栏”,
回调:'\u aCallbackMethod()'
}
然后,您可以基于这些详细输入的数组创建输入元素,并将它们作为对象处理,而无需使用$(blah)查询DOM 您不需要使用ID(这将有助于解决您的动态问题)。例如,您可以将事件添加到类的所有输入中,然后在用户正在交互的输入的输入更改事件中使用此
<input class="descricaoItem" />
<input class="descricaoItem" />
<input class="descricaoItem" />
<input class="descricaoItem" />
<input class="descricaoItem" />
$(document).ready(function() {
$('.descricaoItem').on("input", function() {
var descricaoValue = $(this).val();
var self = this; // save context of this
$.post('mandaDescricao.php', {
descricao: descricaoValue
},
function(data) {
var obj = $.parseJSON(data);
$(self).val(obj.codigo);
});
});
});
如果动态创建输入
s,则必须确保在创建输入
s并将其呈现到DOM后添加事件处理。我不能肯定这就是问题所在,但这是需要研究的。这个简单的解决方案很有魅力,非常感谢!我给了它,但它不算数,因为我的声誉仍然很低。我们会回来的时候,它是。尽你所能帮助别人!行!再次感谢:-)我喜欢你处理这件事的方式,非常系统。但是,它只需要在用户向页面添加问题中所述的新输入时执行。谢谢&true-在回答之前,我需要阅读查询的全部内容。:-)