2017-06-13 100 views
1

标题有点平淡,但我的问题解释如下。删除第一个字后的所有内容JS

目前,我现在有一个实时搜索:

image1

这做什么,我想要它做的,但当然,这是唯一可能与JS的一点点。

现在,当您点击您的搜索所提供的选项之一时,通常会将您带到一个链接,但我添加了下面的JS,以便从中删除所有HTML代码,并将所选用户名从下拉到文本框中。

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#livesearch").click(function(){ 
      var value = $(this).html(); 
      var input = $('#append_value'); 
      var content = value; 
      var text = $(content).text(); //removes all HTML 
      input.val(text); 
     }); 
    }); 
</script> 

现在,这是完美的,一切,但有一个问题。当您从下拉一个选项下其追加这两个选项的文本框中:

image2

现在,这可能是与上面的代码,但我只是想在用户选择哪个选项附加到文本框中。

因此,例如,我搜索战场,我得到了battlefield1battlefield2的结果。如果用户选择battlefield2我希望battlefield2被放置在文本框中,反之亦然。

自从美国东部时间下午1点以来,我一直在努力做到这一点,所以当我说我已经找了很多次解决方案时,您可以相信我。

非常感谢您的帮助。 :)

编辑:

我在做什么与搜索(是的,我知道SQL是不建议使用):

的index.html

<script type="text/javascript"> 
    function lightbg_clr() { 
     $('#qu').val(""); 
     $('#textbox-clr').text(""); 
     $('#search-layer').css({"width":"auto","height":"auto"}); 
     $('#livesearch').css({"display":"none"}); 
     $("#qu").focus(); 
    }; 

    function fx(str) { 
     var s1=document.getElementById("qu").value; 
     var xmlhttps; 
     if (str.length==0) { 
      document.getElementById("livesearch").innerHTML=""; 
      document.getElementById("livesearch").style.border="0px"; 
      document.getElementById("livesearch").style.display="block"; 
      $('#textbox-clr').text(""); 
      return; 
     } 
     if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttps=new XMLHttpRequest(); 
     } else {// code for IE6, IE5 
      xmlhttps=new ActiveXObject("Microsoft.XMLHTTPS"); 
     } 
     xmlhttps.onreadystatechange=function() { 
      if (xmlhttps.readyState==4 && xmlhttps.status==200) { 
       document.getElementById("livesearch").innerHTML=xmlhttps.responseText; 
       document.getElementById("livesearch").style.display="block"; 
       $('#textbox-clr').text("X"); 
      } 
     } 
     xmlhttps.open("GET","scripts/search_friends.php?n="+s1,true); 
     xmlhttps.send(); 
    } 
</script> 
<input type="text" onKeyUp="fx(this.value)" autocomplete="off" name="qu" id="qu" class="form-control" placeholder="Name of the person or group"> 
<div class="list-group" id="livesearch"></div> 
<input type="text" id="append_valueq"> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#livesearch").click(function(){ 
      var value = $(this).val(); 
      var input = $('#append_valueq'); 
      var content = value; 
      var text = $(content).text(); 
      input.val(text); 
     }); 
    }); 
</script> 

search_friends。 php

<?php 
include('../Connections/ls.php'); //script to connect to DB 
$s1=$_REQUEST["n"]; 
$select_query="SELECT * FROM users WHERE Username LIKE '%".$s1."%'"; 
$sql=mysql_query($select_query) or die (mysql_error()); 
$s=""; 
while($row=mysql_fetch_array($sql)) 
{ 
    $s=$s." 
    <a href='javascript:void(0)'>".$row['Username']."</a> 
    " ; 
} 
echo $s; 
?> 

这最终会给我你在第一张图片中看到的结果。

我现在我遇到的问题是,div有实况搜索(<div class="list-group" id="livesearch"></div>)的ID的事实实现,所以它选择了整个DIV,而不是在下拉列表中选择实际...

+1

请[编辑]你的问题来显示相关的HTML。 “价值”变量的价值是什么? (顺便说一句,'var content = value;'是毫无意义的,它只会导致两个变量具有相同的值。) – nnnnnn

+0

@nnnnnn由于此评论,我意识到我在尝试追加方法时出错到文本框中。 – JeanPaul98

回答

0

在获取值时尝试使用.val()而不是html()

+0

当我尝试没有任何反应时。尽管谢谢你的回复。 – JeanPaul98

0

实际上有一个非常简单的方法来做到这一点。

既然你还没有提供你的HTML代码,我会显示我会做什么。

你可以点击与价值:

document.getElementById("dropdown").value(); 

确保您不包括在ID包括hashtag /磅符号。

然后,您可以套用这个值,让我们说你怎么称呼它VAL,这样说: 的document.getElementById(“文本”)值= VAL

我创建了一个的jsfiddle那种-的节目这个概念。看看你是否可以使用自己的代码:https://jsfiddle.net/1j4m1ekc/7/

如果问题仍然存在,请让我知道。我也想看看你的html。

+0

'.value'是一个属性,而不是一个方法。 – nnnnnn

+0

我用我的HTML更新了 – JeanPaul98

0

我不需要立即为此解决方案,因为我发现了另一种替代方法来做我想做的事情,但是如果其他人来自Stackoverflow社区有类似这样的问题并需要一个解决方案。我找到的解决方案如下。

这仍被视为实时搜索,但是,我创建了一个可滚动容器并列出了该容器中的所有用户,因此它现在看起来像这样。

image1

现在从容器中我发现了一个脚本,在网上,将过滤掉不从搜索框中输入匹配任何和所有用户。我发现的脚本是从这里:Live Search,如果你想看一个演示如何脚本工作,View Demo。所以,现在当我输入一个搜索词在文本框中它看起来像这样

enter image description here

这可能不是最大的解决方案,但它为我工作和做什么,我想要它做的。也许它也适用于你:)

相关问题