将信息注入搜索栏jQuery/Javascript
在鼠标悬停或单击时,将li中的内容插入文本框的最佳方式是什么?我想我喜欢搜索页面的自动完成将信息注入搜索栏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>
<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如果答案有帮助,请接受。如果没有,请接受反馈?乔纳森:您的答案让我走上了正确的轨道,但它不符合我的目的。我发现我需要使用我在上面使用的函数。