0

我有一个在提交时提交 searchString 的工作函数。它在 FF 和 Chrome 上运行良好。当我单击搜索按钮时,它适用于所有浏览器。问题在于当我在输入键时调用 .click 函数。它适用于 FF 和 Chrome,但不适用于 IE8。没有用 9 测试,但我认为它也可以。

<input type="text" id="searchString" ><button id="SearchButton" type="submit" onclick="return false;">Look it up!</button>

<script type="text/javascript">

$("#SearchButton").click(function() {

    var str = $("#searchString").val();
    if(str.replace(/\s/g,"") == ""){
        $('#loading').hide();
        return false;
    }

 $("#lookupresults").jqGrid('GridUnload');

    $("#lookupresults").jqGrid({
        ... <jqgrid code here>
    });
    ...

});


//this is what detects when i press the enter key , then i call the click of searchbuttong here
$("#searchString").keyup(function(event){
    if(event.keyCode == 13){
        $("#SearchButton").click();
    }
});

我在日志上得到的是:

HttpMessageNotWritableException:无法写入 JSON:对等方重置连接:套接字写入错误;嵌套异常是 java.net.SocketException: Connection reset by peer: socket write error

这仅在 ie8 上,当我在 FF 和 chrome 上按 Enter 时,它工作正常。当我点击查看它的时候!ie8上的按钮也很好用。是因为我如何调用 click() 函数。

IE8 正确执行此操作的正确方法是什么?

TIA

4

2 回答 2

0

试试这个:

$("#searchString").keyup(function(event){
event.preventDefault();
if(event.keyCode == 13){
    $("#SearchButton").click();
}
});
于 2013-06-18T15:17:03.263 回答
0

正确”的做法是使用提交事件。

$("#theform").on("submit",function(e){
    e.preventDefault();
    var str = $("#searchString").val();
    if(str.replace(/\s/g,"") == ""){
        $('#loading').hide(); // what shows the loader?
        return;
    }
    $("#lookupresults").jqGrid('GridUnload');

    $("#lookupresults").jqGrid({
        ... <jqgrid code here>
    });
    ...
});

如果您以后想要使表单回发,请使用以下命令:

$("#theform").get(0).submit();

由于在表单内的输入上按 enter 将触发提交事件,因此您不再需要在表单的每个输入上都使用 keyup 事件来复制该默认行为。

于 2013-06-18T15:19:44.277 回答