Php 当我选择一个选项来调用函数时使用jQuery

Php 当我选择一个选项来调用函数时使用jQuery,php,jquery,json,jquery-ui-autocomplete,Php,Jquery,Json,Jquery Ui Autocomplete,当我从数据库中选择一个结果时,我想调用一个函数,用相应的信息填充Linha字段,如下图所示: 这是我的密码: 我的自动完成: $("#produto").autocomplete({ source: '/pedidoOnline/index.php/Pedidos/search', minLength: 2, focus: function(event, ui) { $("#produto").val(ui.item.label); ret

当我从数据库中选择一个结果时,我想调用一个函数,用相应的信息填充Linha字段,如下图所示:

这是我的密码:

我的自动完成:

$("#produto").autocomplete({
    source: '/pedidoOnline/index.php/Pedidos/search',
    minLength: 2,
    focus: function(event, ui) {
        $("#produto").val(ui.item.label);
        return false;
    },
    select: function(event, ui) {
        $('#procura_produto').val(ui.item.id);
            }
    });
我要调用以填充字段Linha的函数:

function preencherLinhaProduto(obj) {
    $("#buscaLinha").autocomplete({
        source: '/pedidoOnline/index.php/Pedidos/pesquisarLinhaProduto/' + $('#procura_produto').val(),
        minLength: 2,
        select: function(event, ui) {
            $(obj).each(function() {
                $(this).closest('tr').find('input.cod_linha').val(ui.item.id);
                $(this).closest('tr').find('input.linha').val(ui.item.value);
            });
        }
    });
}
我的HTML:

<div>
    <input type="button" value="Produtos" class="btn btn-success" onClick="dialogProcurarProdutos()">
    <div id="dialogProdutos" title="Procurar produtos cadastrados">
        <label for="produto">Informe o produto que deseja procurar</label>
        <input required type="hidden" name="procura_produto" id="procura_produto"/>
        <input required class="inputGG form-control" type="text" name="produto" id="produto" placeholder="Digite no mínimo as duas letras iniciais"/>"
    </div>
但不幸的是,这不起作用。有人能帮忙吗

你就快到了! 您需要从autocomplete的“select”回调中调用回调函数,在本例中,该函数看起来是preencherLinhaProduto。 [此场景的小JSFIDLE:在这里]

如果您在执行此操作时遇到错误,请发布相关错误日志以获得更有用的答案


此外,我建议您在不使用匿名函数的情况下,将选择回调和实际自动完成药水分开,以保持它的通用性、干净性,并便于您自己根据需要理解和增强。

在@suvartheec的帮助下:

选择:功能事件,用户界面{ console.logui.item;//仅用于检查 PreEncherlinhaproduoi.item.value;//将值作为参数发送到此处 //所以函数可以是泛型的 }


它成功了,非常感谢。

你能发布相关的HTML吗?你能登录你的选择功能来选择ui值吗。console.logui在哪里调用函数preencherlinhaprodutobj?它应该出现在$produto.autocomplete{…}的select:functionevent用户界面中吗?非常感谢!成功了!。。。现在我有另一个问题。。。我在DB中的查询工作正常,给我带来了我想要的结果,但在我的函数中,只得到[]。。。在Mozilla Firefox中看到Firebug答案:[]。再次感谢。请检查您的JSFIDLE链接,目前它是否已断开。@Timlews感谢您指出它。封闭支架挡住了去路。更新了。@EdsonRodrigues很高兴我能帮上忙。如果您的查询按预期工作,那么我会假设您如何将服务器端数据返回到客户端的技术存在问题。也可以通过接受答案来表达您的感激之情。@suvartheec,我在DB中的查询正在工作,但firefox中的代码调试会出现一个数组[]空rs。。我使用json_encode返回。
public function pesquisarLinhaProduto() {
    $this->autoRender = false;
    $this->loadModel('ProcuraProdutoPedOnline');
    // Consultando pelo que o usuário está digitando
    $produto = $this->request->params['pass'][0];
    $linhas = $this->ProcuraProdutoPedOnline->find('all', array(
            'fields' => array('cd_linha', 'ds_linha'),
            'conditions' => array(
                    'cd_cpl_tamanho' => "$produto",
            )
    ));

    // Formatar resultado
    $result = array();
    foreach ($linhas as $key => $linha) {
        $result[$key]['id'] = (int) $linha['ProcuraProdutoPedOnline']['cd_linha'];
        $result[$key]['label'] = utf8_encode($linha['ProcuraProdutoPedOnline']['ds_linha']);
    }

    $linhas = $result;

    echo json_encode($linhas);
}
select: function (event, ui) {
        console.log(ui.item); //just to check
        preencherLinhaProduto(ui.item.value); //send the value here as parameter 
                                              //so the function can be generic
    }