Jquery 1.4.2表单提交事件处理程序在IE 7/8中的表单提交后触发

时间:2012-09-07 13:38:30

标签: jquery internet-explorer

我在表单提交事件处理程序中遇到问题。这是我的代码 我正在使用Jquery 1.4.2

<FORM id="mysearchform" method="get" action="http://www.abc.com/results.aspx?q=" target=_blank sizcache="1694" sizset="0" jQuery1347023310528="3">

<DIV class="search">
<span><span>
<LABEL class=hide for=q>Search:</LABEL>
<INPUT accessKey=S id="a" class="abc" name="a" maxLength="50" value="Images" size=69 type="search" autocomplete="off" selectionStart="0" jQuery1347023310528="108">
<INPUT style="WIDTH: 185px; HEIGHT: 33px" class="img" title="Search" alt="Search" value="Search" src="http://dummyimage.com/180x35" type=image>
<INPUT name="form" value="abcd" type="hidden"></SPAN></SPAN></DIV>
</FORM>

我有一个mysearchform的事件处理程序,用于更改表单输入元素的值和带有“a”的文本框的值,这样在表单提交时我可以更改文本框的值即(添加附加值)

$("#mysearchform").submit(mysubmitHandler);

在mysubmitHandler中,我正在更改“a”的值并形成输入元素。此代码在IE9,FF 4.0和最新版本的chrome中运行良好。但是在IE 7和IE8中,在进入“mysubmitHandler”之前,新窗口正在打开(我在新窗口中显示搜索结果)。因此,我的更改不会附加到搜索窗口上的查询字符串。

在其他浏览器中,“mysubmitHandler”首先触发,然后打开新窗口。

1 个答案:

答案 0 :(得分:0)

我确实重现了这个问题。这是我的设置修复问题的原因:

(在我更改的代码中注释)

// Wrapped everything in jquery onready event function $(function() { }) 
$(function() {
    var $searchForm = $("#mysearchform");

    function onSubmit() {
        var $formElement = $("input[name=form]", $(this));
        $formElement.attr("value", ($("#a").val() + "search"));
    }

    // Put the handler *after* the function definition
    $searchForm.submit(onSubmit);
});