我有一个设置,其中有一个 ASP.NET 4.0 用户控件,其中包含两个文本框OK
和一个Cancel
按钮。
第一个文本框附加了一个 Ajax Control Toolkit Autocomplete Extender,用于在用户开始输入内容时显示匹配的瑞士邮政编码列表。奇迹般有效。
我还将DefaultButton
用户控件的最外层<asp:Panel>
设置为保存(确定)按钮。
现在我遇到了这样一种情况:用户开始输入一些东西,为他的案例获取一个“自动完成”的选项列表,然后从该自动完成列表中选择一个项目。当用户现在按下Enter做出选择时,发生的情况是数据很好地填充到文本框中 - 但用户控件也关闭(它作为模式弹出窗口打开),因为它Enter也触发了DefaultButton
“点击”及其处理程序被执行。
有什么方法可以“吞下”或阻止Enter击键冒泡到面板上?
这是我的标记和代码:
<script type="text/javascript">
function IAmSelected(source, eventArgs) {
var textval = eventArgs.get_text().split(' - ');
$('#<%= tbxZipCode.ContainedTextBoxClientID %>').val(textval[0]);
$('#<%= tbxCity.ContainedTextBoxClientID %>').val(textval[1]);
// here, I tried "return false;" - didn't work either....
source.preventDefault();
}
<asp:Panel runat="server" ID="PanelZipCodes" DefaultButton="btnSave">
<asp:TextBox runat="server" ID="tbxZipCode" />
<asp:AutoCompleteExtender runat="server" ID="AutoCompletePlz" TargetControlID="tbxZipCode" BehaviorID="ZipCodeBehavior"
Enabled="True" MinimumPrefixLength="1" CompletionInterval="50" CompletionSetCount="15"
FirstRowSelected="True" ServiceMethod="GetMatchingPlz" OnClientItemSelected="IAmSelected" />
<asp:TextBox runat="server" ID="tbxCity" />
<asp:Button runat="server" ID="btnSave" OnClick="btnSaveClick" />
<asp:Button runat="server" ID="btnCancel" OnClick="btnCancelClick" />
</asp:Panel>
有任何想法吗?我相信我必须在IAmSelected
脚本片段中做一些事情——但究竟是什么?我尝试使用return false;
- 没有用;然后我尝试source.preventDefault();
了-也不起作用-Enter仍然“冒泡”到面板并使其“单击”btnSave
按钮并关闭模式弹出窗口...