该功能应该根据用户在文本框中输入的内容加载建议。
onkeyup和onblur事件应该在文本框中进行评估,然后结果将被馈送到最初隐藏的div,该div在馈入数据之前将首先显示。
最初,这些事件已包含在标记中,该标记对于Firefox来说效果很好。
作为替代方案,我尝试从标记中删除事件,并使用jQuery $()选择器将事件与函数绑定在一起,从而使该函数在以后的任何浏览器上均无法正常工作。
这是适用于Firefox的代码,但不适用于IE和chrome。
<td align="center">
<input type='text' size='25' id='dr' name='dr' style="width: 45px" onkeyup='drKeyUpFunction(this.value);' onblur='drBlurFunction();'>
<div id='drSuggestions' class='suggestionsBox' style='display: none'>
<div id='drSuggestionsList' class='suggestionList'></div>
</div>
</td>
<td align="center">
<input type='text' size='25' id='outExpense' name='outExpense' style='width: 85px' onkeyup='expKeyUpFunction(this.value);' onblur='expBlurFunction();'>
<div id='expSuggestions' class='suggestionsBox' style='display: none'>
<div id='expSuggestionsList' class='suggestionList'></div>
</div>
</td>
function drKeyUpFunction(dr_num=''){
if (dr_num.length == 0){ $('#drSuggestions').hide();
} else {
$.post("post_dr.php", {string: "" + dr_num + ""}, function(data){
if (data.length > 0) {
$('#drSuggestions').show();
$('#drSuggestionsList').html(data);
}
});
}
}
function drBlurFunction(thisValue='', thatValue='', anotherValue=''){
$('#dr').val(thisValue);
$('#drcust').html(thatValue);
$('#drbal').html(anotherValue);
setTimeout("$('#drSuggestions').hide();", 200);
}
function expKeyUpFunction(expense=''){
if (expense.length == 0){ $('#expSuggestions').hide();
} else {
$.post("post_expense.php", {string: "" + expense + ""}, function(data){
if (data.length > 0) {
$('#expSuggestions').show();
$('#expSuggestionsList').html(data);
}
});
}
}
function expBlurFunction(thisValue=''){
$('#outExpense').val(thisValue);
setTimeout("$('#expSuggestions').hide();", 200);
}
作为替代方案,我删除了输入标签中的事件,并将这些jQuery选择器放置在包含函数的js文件中,但在放置它们后它们不再起作用。
$('#dr').keyUp(drKeyUpFunction(this.value)).blur(drBlurFunction());
$('#outExpense').keyUp(expKeyUpFunction(this.value)).blur(expBlurFunction());
此代码的预期结果是显示所有浏览器中可用建议的div。
如果您能帮助我,我将不胜感激。