我有一个搜索文本框和一个按钮,当使用鼠标单击时,文本框文本在服务器端代码中用于过滤结果......在幕后,这是使用 Ajax 完成的,而且效果很好。
我想创建一个clientsdie keypress事件,所以当用户在框中按下回车键时,会点击搜索按钮。
当我在文本框按键事件中使用 ('#somebutton').click() (或等效的 ('#somebutton').trigger("click"))时,服务器端代码运行但采用旧的文本框搜索值...这是正在发生的事情的一个例子。
[使用鼠标]
- 在搜索框中输入“玛丽”,用鼠标点击搜索,返回玛丽的结果。
- 在搜索框中输入“Bob”,用鼠标点击搜索,返回 Bob 的结果。
【使用Keypress事件和触发点击方法】
- 在搜索框中输入“Mary”,回车,返回“”的结果。
- 在搜索框中输入“Bob”,然后按回车,返回 Mary 的结果。
这是我在 $(document).ready 事件中运行的客户端代码。
$('.txtSearch').keypress(function(event){
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
$('.btnSearch').click();
}
});
谁能解释为什么通过 JQuery 的单击事件不采用当前搜索文本框的值,但实际上用鼠标单击按钮呢?
谢谢...
另外... 这个搜索框是一个自定义构建的服务器控件,因此每次在 Control.CreateChildControls 方法中都会在代码中创建文本框和按钮等组件。
我从这里唯一的猜测是
与使用 JQuery.click() 方法相比,单击搜索按钮会在生命周期后期以某种方式触发服务器端单击事件...(不太可能是这样)或
关于视图状态数据的一些事情。也许触发单击事件的 JQuery 方法会导致视图状态数据在我需要它之后与服务器控件绑定。