多个输入字段上的jquery自动完成不会过滤结果

时间:2016-06-15 16:04:40

标签: jquery symfony

在我的symfony(v2)应用程序中,我有一个显示订单详情的代码。

<td><input type="text" name="namecpte[]" class="cpte" id="idcpte_{{loop.index}}"></td>

我必须在自动填充输入的帐号中添加一个帐号#(请参阅该行上方的代码):

$('.cpte').on("focus", function(){
var idInput = $(this).attr('id')
var a='#'+idInput;
b = $(a);
b.autocomplete({
  source : function(requete, reponse){
    var id =  b.val();
    var DATA = 'id=' + id;
        $.ajax({
           type:"POST",
           url : "{{ path('cpte_numero') }}",
           dataType : 'json',
           data : DATA, 
           success : function(donnee){
            reponse($.map(donnee, function(objet){
            return objet; 
            }));
           }
         });
       }
     });
    });

这是我的自动填充代码:

{{1}}

问题是当我输入帐号输入时,自动完成显示(所有帐户,有789个帐户)但结果未被过滤。 例如,当我输入

  

45

自动填充必须返回(2个帐户)

  

4581    4588

但它会返回789个帐户

如何解决?提前谢谢

PS:我为我可怜的英语道歉

1 个答案:

答案 0 :(得分:0)

在cpte_numero路由指向的控制器方法中,您需要从AJAX调用中获取数据,然后根据发布到该控制器的内容过滤结果。

E.g。类似的东西:

public function cpteNumeroAction(Request $request) {

    // $data = $request->request->all(); var_dump($data); // you can use this for debugging
    $accountPartialId = $request->request->get('id'); // assuming your post data is this format

    // then based on account partial id you can filter E.g.
    $qb = $this->getEntityManager()->createQueryBuilder();

    $accountIds = $qb->select('a.accountNumber')
        ->from('YourBundle:Account', 'a')
        ->where($qb->expr()->like('a.accountNumber', ':comparison'))
        ->setParameter('comparison', $accountPartialId . '%')
        ->getQuery()
        ->getResult();

    // maybe you need to format your data a little more here

    return new JsonResponse($accountIds); // maybe you have JSON, maybe some other format
}

这只是一个让你入门的方法/示例。