Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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
将信息注入搜索栏jQuery/Javascript_Javascript_Jquery_Html - Fatal编程技术网

将信息注入搜索栏jQuery/Javascript

将信息注入搜索栏jQuery/Javascript,javascript,jquery,html,Javascript,Jquery,Html,在鼠标悬停或单击时,将li中的内容插入文本框的最佳方式是什么?我想我喜欢搜索页面的自动完成 <form> <input id="search" type="text" size="75" maxlength="60" placeholder="search stuff saturday" value=""> </form> <ul> <li class="red-red">stuff here</li>

在鼠标悬停或单击时,将li中的内容插入文本框的最佳方式是什么?我想我喜欢搜索页面的自动完成

<form>
    <input id="search" type="text" size="75" maxlength="60" placeholder="search stuff saturday" value="">
</form>

<ul>
    <li class="red-red">stuff here</li>
    <li class="red-red">more things</li>
    <li class="red-red">ginormous things</li>
</ul>

    这里的东西
  • 更多内容
  • 巨大的东西

任何帮助都将不胜感激

使用jQuery,您可以使用
.val()
函数设置
的值,并使用
.text()
函数获取
  • 的值:

    $("li.red-red").click(function() {
        $("input#search").val($(this).text());
    });
    
    请参阅JSFiddle.net上的工作示例

    您也可以使用jQuery的
    .hover()
    来实现这一点,但是它的语法有点不同(但是请注意:您需要为
    onmouseover
    onmouseout
    事件都使用处理程序)


    看到你的评论,有一个很大的变化要做。jQuery选择器(或者JS)只对现有元素起作用

    因此,要使代码正常工作,必须将其放在动态创建之后。问题是当页面加载后需要添加列表项时

    如果是这样,那么您可能应该在创建每个
  • 时将
    .click()
    处理程序应用到它,如下所示:

    for(var i = 0; i < 25; i++) {  // this is my "dynamic creation"
        var li = $("<li>");
        li.addClass("red-red");
        li.text("stuff here " + i);
        li.click(function() {      // put `click()` handler on EXISTING li (variable)
            $("input#search").val($(this).text());
        });
        $("ul").append(li);
    }
    
    for(var i=0;i<25;i++){//这是我的“动态创建”
    var li=$(“
  • ”); li.addClass(“红色”); li.text(“这里的东西”+i); click(函数(){//put`click()`处理程序位于现有li(变量)上) $(“输入#搜索”).val($(this.text()); }); $(“ul”)。附加(li); }

  • 请参阅。

    使用jQuery,您可以使用
    .val()
    函数设置
    的值,并使用
    .text()
    函数获取
  • 的值:

    $("li.red-red").click(function() {
        $("input#search").val($(this).text());
    });
    
    请参阅JSFiddle.net上的工作示例

    您也可以使用jQuery的
    .hover()
    来实现这一点,但是它的语法有点不同(但是请注意:您需要为
    onmouseover
    onmouseout
    事件都使用处理程序)


    看到你的评论,有一个很大的变化要做。jQuery选择器(或者JS)只对现有元素起作用

    因此,要使代码正常工作,必须将其放在动态创建之后。问题是当页面加载后需要添加列表项时

    如果是这样,那么您可能应该在创建每个
  • 时将
    .click()
    处理程序应用到它,如下所示:

    for(var i = 0; i < 25; i++) {  // this is my "dynamic creation"
        var li = $("<li>");
        li.addClass("red-red");
        li.text("stuff here " + i);
        li.click(function() {      // put `click()` handler on EXISTING li (variable)
            $("input#search").val($(this).text());
        });
        $("ul").append(li);
    }
    
    for(var i=0;i<25;i++){//这是我的“动态创建”
    var li=$(“
  • ”); li.addClass(“红色”); li.text(“这里的东西”+i); click(函数(){//put`click()`处理程序位于现有li(变量)上) $(“输入#搜索”).val($(this.text()); }); $(“ul”)。附加(li); }

  • 请参阅。

    我最终使用的是:

     $(document).on('click','li.red-red', function(){
            var foo = $('input#search').val($(this).html());
        });
    

    这很有效。我现在唯一的问题是,当运行基于“自动完成”功能的搜索时,从li.red-red传输到input#search的html会在url的前后添加++

    我最后做的是使用:

     $(document).on('click','li.red-red', function(){
            var foo = $('input#search').val($(this).html());
        });
    

    这很有效。我现在唯一的问题是,当运行基于“自动完成”功能的搜索时,从li.red-red传输到input#search的html会在url的前后添加++

    到目前为止你试过什么?所以是帮助解决问题,而不是编写其他人的代码。@flomei我一直在尝试为li的innerhtml设置变量,并将其传递到文本的val中。感谢您的澄清,这将帮助人们。到目前为止,您做了哪些尝试?所以是帮助解决问题,而不是编写其他人的代码。@flomei我一直在尝试为li的innerhtml设置变量,并将其传递到文本的val中。感谢澄清,这将帮助人们。这在示例中非常有效,但当我尝试单击我的li.red-red时(这是动态驱动的结果,如果这很重要的话)我无法单击。感谢您为我提供了解决此问题的指导。@newneub查看我的答案。动态添加确实很重要。@newneub如果答案有帮助,请接受。如果没有,请接受反馈?乔纳森:您的答案让我走上了正确的轨道,但它不符合我的目的。我发现我需要使用我在上面使用的函数。这在示例中非常有效,但当我尝试单击我的li.red-red(如果有必要,这是动态驱动的结果)时我无法单击。感谢您为我提供了解决此问题的指导。@newneub查看我的答案。动态添加确实很重要。@newneub如果答案有帮助,请接受。如果没有,请接受反馈?乔纳森:您的答案让我走上了正确的轨道,但它不符合我的目的。我发现我需要使用我在上面使用的函数。