0

我在表单提交事件处理程序中遇到问题。这是我使用 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 的事件处理程序,用于更改表单输入元素的值和 id 为“a”的文本框的值,以便在提交表单时我可以更改文本框的值,即(添加附加值)

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

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

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

4

1 回答 1

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);
});
于 2012-09-07T15:21:50.840 回答