javascript-如何从自动完成函数获取onChange事件的完整值

javascript-如何从自动完成函数获取onChange事件的完整值,javascript,onchange,Javascript,Onchange,首先,我不熟悉Javascript。我需要具体的帮助,不仅仅是解释该做什么。谢谢 问题描述: 我有一个文本字段,在用户开始键入后,它会生成一个下拉列表,其中包含数据库中的值……基本上是一个自动完成的功能 根据此文本字段中的值,需要使用该值启动另一个进程。但问题是,该值只是用户在字段中键入的值,而不是用户最终从自动完成列表中选择的值 例如: 我输入“bo”,自动完成列表生成“boeing”。我点击boeing来填写这个字段。。。但得到的价值是“bo” 如何捕获完整的值并在下面解释的onChange

首先,我不熟悉Javascript。我需要具体的帮助,不仅仅是解释该做什么。谢谢

问题描述:

我有一个文本字段,在用户开始键入后,它会生成一个下拉列表,其中包含数据库中的值……基本上是一个自动完成的功能

根据此文本字段中的值,需要使用该值启动另一个进程。但问题是,该值只是用户在字段中键入的值,而不是用户最终从自动完成列表中选择的值

例如:

我输入“bo”,自动完成列表生成“boeing”。我点击boeing来填写这个字段。。。但得到的价值是“bo”

如何捕获完整的值并在下面解释的onChange事件中使用它? 混凝土材料:

1) 字段:

<input type=\"text\" size=\"30\" name=\"manuList\"
    id=\"inputString\" value=\"$_POST[manu_prev]\" 
    onkeyup=\"lookup(this.value);\" onblur=\"fill();\" 
    onChange=\"htmlData('get_model.php', 'ch='+this.value)/>

<div class=\"suggestionsBox\" id=\"suggestions\" 
     style=\"display: none;\">
  <img src=\"/images/upArrow.png\" 
    style=\"position: relative; top: -12px; 
            left: 30px;\" alt=\"upArrow\" />
  <div class=\"suggestionList\" id=\"autoSuggestionsList\">
      &nbsp;</div>
</div>
启动的php脚本“get_model.php”打印以下值:

 echo $_GET['ch'];  
用于自动完成的其他功能:

function lookup(inputString)
{
  if(inputString.length == 0)
  {
    // Hide the suggestion box.
    $('#suggestions').hide();
  } else
  {
    $.post("rpc.php", {queryString: ""+inputString+""}, function(data)
    {
      if(data.length >0) 
      {
        $('#suggestions').show();
        $('#autoSuggestionsList').html(data);
      }
    });
  }
} // lookup

function fill(thisValue) 
{
  $('#inputString').val(thisValue);
  setTimeout("$('#suggestions').hide();", 200);
}

function GetXmlHttpObject(handler)
{
   var objXMLHttp=null
   if (window.XMLHttpRequest)
   {
       objXMLHttp=new XMLHttpRequest()
   }
   else if (window.ActiveXObject)
   {
       objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
   }
   return objXMLHttp
}

function stateChanged()
{
   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
   {
       document.getElementById("txtResult").innerHTML= xmlHttp.responseText;
   }
   else 
   {
       //alert(xmlHttp.status);
   }
}

您需要收听您创建的列表上的事件-您能给出一个填充
autoSuggestionsList

例如,它可能是通过以下行添加的列表:

$('autoSuggestionsList').html(数据)

那可以给你

<div class=\"suggestionList\" id=\"autoSuggestionsList\">
      <ul id="unOrderedList">
          <li value="2">Whatever</li>
          ......
      </ul>
</div>

这将替换输入字段上的onchange事件

您在这里使用jquery吗?看起来您使用的是$()语法……是的,下面是jquery(ajax)查询数据库以获得自动完成的答案。。。。或者有一个插件->键入“bo”将生成:Boeing Boeing Canada Bombardier Bowers他们都是aicraft制造商。你需要将他们放入某种HTML元素中,然后添加一个侦听器,以便对他们的选择做出反应……好的,所以我将id添加到我的列表中。。。echo“
    ”;虽然($row=mysqli_fetch_assoc($result)){//onClick函数将结果填充到文本框中。echo“
”,然后我更改了函数“fill”(请参见我的原始名称):$('#inputString').val(此值);setTimeout($('#建议').hide();“,200);$('#制造商列表li')。单击(函数(){var val=$(this.attr('value');htmlData('get_airpair.php','ch='+val)});结果是系统告诉我变量未定义。有什么建议吗?抱歉,我想很好地回答你的答案,但不知道如何回答。这些命令不允许我格式化编码。@ManseUK谢谢你……它工作得很好!!!!我已将函数fill()更改为:函数fill(thisValue){$('#inputString').val(thisValue);setTimeout($('#建议')。hide();”,200);$('#manufacture_list li')。单击(函数(){val=$(this.attr('value');htmlData('get_airpair.php','ch='+(thisValue));})
<div class=\"suggestionList\" id=\"autoSuggestionsList\">
      <ul id="unOrderedList">
          <li value="2">Whatever</li>
          ......
      </ul>
</div>
$('#unOrderedList li').click(function(){
      var value = $(this).attr('value');
      // Do what every you want with the data.....
  });