0

我有一个搜索文本框和一个按钮,当使用鼠标单击时,文本框文本在服务器端代码中用于过滤结果......在幕后,这是使用 Ajax 完成的,而且效果很好。

我想创建一个clientsdie keypress事件,所以当用户在框中按下回车键时,会点击搜索按钮。

当我在文本框按键事件中使用 ('#somebutton').click() (或等效的 ('#somebutton').trigger("click"))时,服务器端代码运行但采用旧的文本框搜索值...这是正在发生的事情的一个例子。

[使用鼠标]

  1. 在搜索框中输入“玛丽”,用鼠标点击搜索,返回玛丽的结果。
  2. 在搜索框中输入“Bob”,用鼠标点击搜索,返回 Bob 的结果。

【使用Keypress事件和触发点击方法】

  1. 在搜索框中输入“Mary”,回车,返回“”的结果。
  2. 在搜索框中输入“Bob”,然后按回车,返回 Mary 的结果。

这是我在 $(document).ready 事件中运行的客户端代码。

    $('.txtSearch').keypress(function(event){

        var keycode = (event.keyCode ? event.keyCode : event.which);

        if(keycode == '13'){
            $('.btnSearch').click();            
        }

    });

谁能解释为什么通过 JQuery 的单击事件不采用当前搜索文本框的值,但实际上用鼠标单击按钮呢?

谢谢...

另外... 这个搜索框是一个自定义构建的服务器控件,因此每次在 Control.CreateChildControls 方法中都会在代码中创建文本框和按钮等组件。

我从这里唯一的猜测是

  1. 与使用 JQuery.click() 方法相比,单击搜索按钮会在生命周期后期以某种方式触发服务器端单击事件...(不太可能是这样)或

  2. 关于视图状态数据的一些事情。也许触发单击事件的 JQuery 方法会导致视图状态数据在我需要它之后与服务器控件绑定。

4

0 回答 0