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>

フォーム入力要素の値とID「a」のテキストボックスの値を変更するために使用されるmysearchformのイベントハンドラーが1つあるため、フォーム送信時にテキストボックスの値を変更できます(追加の値を追加)

$("#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 に答える