Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将json中的自动填充功能用于动态创建的输入?_Javascript_Json_Dynamic - Fatal编程技术网

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);
});
});
});
}
  • 创建由输入对象数组组成的JSON对象
  • [{id:'#codigoItem0'},{id:'#codigoItem1'},{id:'#codigoItem2'}]
    
  • 使用forEach循环将更改事件侦听器应用于每个节点
  • 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-在回答之前,我需要阅读查询的全部内容。:-)