Прежде всего, я новичок в Javascript. Мне нужна конкретная помощь, а не только объяснения, что делать. Thx!
Описание проблемы:
У меня есть текстовое поле, которое после того, как пользователь начинает набирать его, генерирует выпадающий список со значениями из базы данных .... в основном функция автозаполнения.
На основании значения в этом текстовом поле необходимо инициировать другой процесс с использованием значения. Но проблема в том, что значение - это только то, что пользователь ввел в поле, а не то, что пользователь выбрал из списка автозаполнения.
пример:
Я набираю "bo", и список автозаполнения генерирует "boeing". Я нажимаю на Боинг, чтобы заполнить поле ... но выбрано значение "Бо".
Как я могу получить полное значение и использовать его в событии 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\">
</div>
</div>
2) функция htmlData нуждается в значении поля (событие onChange), но, как объяснено выше, только то, что пользовательские типы хранятся в this.value, а не то, что выбирается из списка. Я хочу напечатать значение, выбранное пользователем этим:
onChange = \ "htmlData ('get_model.php', 'ch =' + this.value)
Но вместо того, чтобы печатать полное значение «boeing», он напечатает «bo», который пользователь набрал для создания списка.
function htmlData(url, qStr)
{
if (url.length==0)
{
document.getElementById("txtResult").innerHTML="";
return;
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
url=url+"?"+qStr;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true) ;
xmlHttp.send(null);
}
Инициированный 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);
}
}