一次一个地定位多个文本字段,而不是使用ID

时间:2017-03-07 19:40:19

标签: jquery ajax

我还没有这样做,但我计划根据用户输入使用php生成文本字段。所以,如果他们输入3,那么他们应该得到3个文本字段来填写等等。

我可以只选择一个类或输入,而不是试图给每个文本字段一个ID(我必须应用代码来对文本字段进行编号并根据他们选择的数字递增)。我试图这样做,但是使用ajax搜索,结果出现在所有文本字段中,而不仅仅是他们输入的字段。

    <div class="form-group">
        <input type="text" name="name" autocomplete="off">
        <div class="result"></div>
    </div>
    <div class="form_group">
        <input type="text" name="name" autocomplete="off">
        <div class="result"></div>
    </div>


$(document).ready(function(){
    $("input").keyup(function(){
        $(".loader").show();
        var input = $(this).val();
        if (input.length >3){
              $.ajax({
                  type: 'POST',
                  url: 'insert-ajax.php',
                  data: {name:input},
                  success: function(data){

                      if(!data.error) {
                      $(".result").html(data);
                      $(".loader").hide();
                      }
                  }

              });
            } 

                if (input.length <1) {
                    $(".loader").hide();
                    $(".result").html("");
                }
        });

        $(".result").on( "click", "li", function() {
                console.log($(this).text());
            $("input").val($(this).text());

            });

    });

2 个答案:

答案 0 :(得分:0)

尝试把

$('input').val($this().text);

在您的键盘功能

$(this).text(data);

而不是

$('.result').html(data);

答案 1 :(得分:0)

使用jQuery对象,您可以获得一组很好的遍历函数。据我了解,在您的每个.results div中,您都有一个无序列表,并且您希望能够单击该列表中的li并使最近的文本字段填充值。假设我是对的,您可以使用.closest()函数为.results获取祖先div li,然后使用{{}获取最近的输入字段1}}功能。如下所示:

.siblings()

有点乱,但这会奏效。也就是说,我不确定你为什么要在一个keyup处理程序中这样做。它可以为$(".result").on( "click", "li", function() { console.log($(this).text()); $(this).closest(".result").siblings("input").val($(this).text()); }); 标记添加多个点击处理程序。