我想用ajax做一個遠程autosuggest,並且在使用onclick函數時遇到麻煩。我收到的Ajax響應簡直是像從ajax響應創建一些對象
One Name
Another Name
相隔\ n
所以下面是我到目前爲止所。它存在的問題:代碼非常難看,// /////////////之間的界限不起作用。顯然它會保存對變量的引用,並且所有元素都將文本輸入填入最後一個元素的值。
任何人都可以幫我解決這個問題嗎?要麼只是將字符串的副本傳遞給該函數定義,要麼提示,鏈接或任何以正確方式執行此操作的任何方式都將受到高度讚賞。
感謝
<script type="text/javascript">
$('.suggestable').live('keyup', (function() { suggest(this); }));
function suggest(inputTextField)
{
var inputString = inputTextField.value;
var lookFor = $(inputTextField).attr('data-lookfor');
if(inputString.length == 0) {
// $('#suggestions').fadeOut();
} else {
$.post(AjaxVars.url,
{
action: 'suggest-submit',
queryString: ""+inputString+"",
lookFor: ""+lookFor+""
},
function(data)
{
// Clear the target div in a very very ugly way
document.getElementById('suggestionsList').innerHTML = "";
var myul = document.createElement('ul');
data = data.split("\n");
for(var index in data)
{
elem = data[index];
if(elem.length > 0)
{
var myli = document.createElement('li');
myli.innerHTML = elem;
//////////////////////////////////////
myli.onclick=(function() { fill(inputTextField, elem); });
//////////////////////////////////////
myul.appendChild(myli);
}
}
document.getElementById('suggestionsList').appendChild(myul);
});
}
}
function fill(object, thisValue) {
object.value = thisValue;
// setTimeout("$('#suggestions').fadeOut();", 600);
}
</script>