我有一个附加到文本框的AjaxControlToolkit.AutoCompleteExtender控件和三个单选按钮。当用户选择单选按钮时,用于检索AutoCompleteExtender中列出的值的服务方法将更改,如下所示:
$("#radioButtonList input").click(function() {
var selectedValue = $(this).val();
if (selectedValue == 0) {
$find('autoCompleteExtender').set_serviceMethod('AutoCompleteExtenderMethod1');
}
else if (selectedValue == 1) {
$find('autoCompleteExtender').set_serviceMethod('AutoCompleteExtenderMethod2');
}
else if (selectedValue == 2) {
$find('autoCompleteExtender').set_serviceMethod('AutoCompleteExtenderMethod3');
}
$('#textbox').focus();
}
我想确保,如果用户在文本框中已经存在文本时选择单选按钮,则会显示基于新服务方法的自动完成值列表(就像用户点击收音机时一样)按钮,然后键入文本框)。
我尝试了各种事件触发机制,例如:
var press = jQuery.Event("keypress");
press.ctrlKey = false;
press.which = 77;
$('#textbox').trigger(press);
......其中每一个......
$('#textbox').keydown();
$('#textbox').keypress();
$('#textbox').keyup();
甚至:
$('#textbox').get(0).value += 'm';
但似乎没有任何东西强制要触发正确的事件,以便使用新服务方法的结果重新显示自动完成列表。如何使用Javascript实现这一目标?
编辑:我应该注意:在上述每种情况下,jQuery事件都正确触发,它们只会导致自动完成列表重新出现。我想我还没有找到autocompleteextender期望强制列表出现的事件的正确组合。
答案 0 :(得分:2)
确保在$(document).ready()函数中绑定事件。以下工作正常
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript">
</script>
<script>
$(document).ready(function(){
$("#radioButtonList input").change(function() {
var selectedValue = $(this).val();
if (selectedValue == 0) {
$find('autoCompleteExtender').set_serviceMethod('AutoCompleteExtenderMethod1');
}
else if (selectedValue == 1) {
$find('autoCompleteExtender').set_serviceMethod('AutoCompleteExtenderMethod2');
}
else if (selectedValue == 2) {
$find('autoCompleteExtender').set_serviceMethod('AutoCompleteExtenderMethod3');
}
//force click on text box
$('#textbox').click()
$('#textbox').focus();
});
//handle click event
$("#textbox").click(function(){
alert("textbox clicked")
//handle your refresh action for the textbox here
})
})
</script>
</head>
<body>
<input id="textbox" type="text" value="test">
<div id="radioButtonList">
<input type="radio" value="0">
<input type="radio" value="1">
<input type="radio" value="2">
</div>
</body>
</html>