2014-03-31 31 views
1

我有打字的時候打開的建議列表(活的)一輸入字段。一個javascript函數,將結果作爲下拉列表返回給div。下拉列表中的鏈接觸發動作後不會關閉點擊

在此下拉列表中的每一項都是一個HREF鏈接觸發的動作。這個動作也是一個javascript函數。

<ul> 
    <li><a href="#" onclick="getObject(\'index\')">Item name</a></li> 
    <li> ... other items ... </li> 
    .... 
</ul> 

到目前爲止確定,工作正常。

問題:在下拉列表中保持單擊某個項目後打開。我搜索並嘗試了幾十個類似的解決方案,但我無法完成它。

這是觸發點擊列表中的項目時一起行動。傳遞值「q」。

(爲了簡化這裏的問題,我加的,而不是實際的功能,我會using.q警報)

if(typeof $=='undefined') { 
    function $(q) { 
     return(document.getElementById(q)); 
    } 
} 

function getObject(q) { 
    alert(q); 
    /// close dropdown list here 
}; 

任何幫助,不勝感激!現在我一直在尋找並嘗試類似的代碼。謝謝!

這是一個觸發下拉列表

function showSearch(str){ 
if (str.length==0){ 
     document.getElementById("resultlist").innerHTML=""; 
    document.getElementById("resultlist").style.border="0px"; 
    return; 
} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
document.getElementById("resultlist").innerHTML=xmlhttp.responseText; 
document.getElementById("resultlist").style.border="1px solid #CCCCCC"; 
} 
}; 
xmlhttp.open("GET","search.php?q="+str,true); 
xmlhttp.send(); 

} 

的search.php中查找一個MySQL表用一個簡單的SELECT語句的功能。

+0

是否可以讓你用你的下拉代碼:

<ul> <li><a href="#" onclick="getObject(\'' . $indx . '\')">Item name</a></li> <li> ... other items ... </li> .... </ul> 

功能在顯示的列表上的項目時,點擊觸發?此外,您可以添加事件偵聽器的標籤,而不是內聯函數,你應該避免。 – Deviljho

+0

謝謝阿德里安。我添加了下拉菜單的代碼。 – chrimens

回答

0

隨着信息avaible我supose最好的解決方案是一個id設置爲UL,然後用

$('#the_ul_id').hide(); 
+0

謝謝傑里米,Iñaki。我以前試過這個代碼。沒有成功。我收到錯誤消息「Uncaught TypeError:Can not call method'hide'of null」。即使我有jquery包括。 – chrimens

0

隱藏我懂了!我正在使用CSS樣式來顯示,或不顯示。 Jeremy和Iñaki的「隱藏」技巧給了我這個想法......謝謝!並感謝Adrián提供避免內聯函數的暗示。

下面是具有類似問題

任何輸入字段和包含下拉列表中的div代碼:

<form><input type="text" class="searchfield" placeholder="Search" onKeyUp="showSearch(this.value)"></form> 
<div id="resultlist"></div> 

功能輸入搜索時觸發。它會顯示一個下拉菜單的項目爲鏈接:

function showSearch(str) 
{ 

// this will reset the css display value so a new search is displayed 
var listShow = document.querySelector("#resultlist"); 
listShow.style.display = "inherit"; 


if (str.length==0) 
{ 

document.getElementById("resultlist").innerHTML=""; 
document.getElementById("resultlist").style.border="0px"; 
return; 
} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
document.getElementById("resultlist").innerHTML=xmlhttp.responseText; 
document.getElementById("resultlist").style.border="1px solid #A5ACB2"; 
} 
}; 
xmlhttp.open("GET","search.php?q="+str,true); 
xmlhttp.send(); 


} 

的的search.php將選擇查詢MySQL表並將結果作爲UL /李列表返回。 $ indx是唯一的物品ID,傳遞到「q」。

function getObject(q) { 

// does something here with the value q 

// this lets the drop down list disappear after click on an item 
var listHide = document.querySelector("#resultlist"); 
listHide.style.display = "none"; 

}; 
+0

如果你使用的是jQuery(你的標籤說的是jQuery),你可以通過'on'方法添加事件監聽器,就像這個'$(element).on('click',function(){});'這是在HTML之外處理javaScript的更好方法。 – Deviljho

相關問題