$(function()
{
$('#txtSearch').chainSelect('#link_id','http://localhost/example.com/combobox.php',
{
before:function (target) //before request hide the target combobox and display the loading message
{
$("#loading").css("display","block");
$(target).css("display","inline");
},
after:function (target) //after request show the target combobox and hide the loading message
{
$("#loading").css("display","none");
$(target).css("display","inline");
}
});
});
// form code
<td><div><input type="text" id="txtSearch" name="cat_name" onkeyup="searchSuggest();" autocomplete="off" class="inputbox ajax" value="" /></div></td>
<td><div><select name="link_id" id="link_id" class="inputbox select"><option value="">All Courses</option></select></div>
第一个输入使用ajaxsuggest类型的行为,当用户开始键入时,该行为从数据库(使用php)中提取类别列表。用户单击其中一个CAT,输入将被单击的文本填充。接下来是一个课程选择列表,当用户选择第一个输入时,也会从数据库中提取该列表。
这是Ajax代码的一部分-在1个外部文件中:
function handleSearchSuggest() {
if (searchReq.readyState == 4) {
var ss = document.getElementById('search_suggest')
ss.innerHTML = '';
var str = searchReq.responseText.split("\n");
for(i=0; i < str.length - 1; i++) {
//Build our element string. This is cleaner using the DOM, but
//IE doesn't support dynamically added attributes.
var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
suggest += 'onmouseout="javascript:suggestOut(this);" ';
suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
suggest += 'class="suggest_link" id="suggestTrigger">' + str[i] + '</div>';
ss.innerHTML += suggest;
}
}
}
//Click function
function setSearch(value) {
document.getElementById('txtSearch').value = value;
document.getElementById('search_suggest').innerHTML = '';
}
它创建了一个用猫名填充的div。
相关的select list jquery代码如下-在第二个外部文件中:
jQuery.fn.chainSelect = function( target, url, settings )
{
return this.each( function()
{
$(this).change( function( )
{
// more code here
});
});
};
如您所见,选择列表是在发生更改事件时从数据库中提取的。由于用户在div中单击,并且没有真正创建对输入文本的更改,因此目前这种方法不起作用。应该触发选择的事件是建议框div的onclick。但它已经有一个名为setSearch()的函数。如何在div建议框(在ajax代码中)的onclick事件上激活jquery函数,而不是像现在这样在建议输入框(#txtSearch)的change事件上激活jquery函数?