0

「検索」と「マトリックス検索」の2つのボタンがあります。「検索」ボタンを最初にクリックすると、本来の動作が実行されます。しかし、「マトリックス検索」ボタンをクリックした後に「検索」ボタンをクリックすると、matrixSearch() 関数が呼び出されます。なぜこれが起こるのですか?スコープと何か関係がありますか?

以下は私の行動の順序です:

ボタンAをクリック--->正常に動作します(機能Aを呼び出します)

ボタン B をクリックします---> 正常に動作します (機能 B を呼び出します)

ボタン A をクリック ---> ボタン B の onClick 関数を呼び出す (関数 B を呼び出す) なぜ??

jsp ファイル:

<input type="submit" title="Search" value="Search" 
                name="Search" id="Search"
                onClick="clickSearchButton();" />
<input type="button" class="buttonIndent" value="Matrix Search" 
                onclick="matrixSearch()" />

function matrixSearch(){
    //some Code omitted for simiplicity
    form.action = '<%= request.getContextPath() %>/matrixSearch.do';
}

function clickSearchButton(){
    form.action = "<%= request.getContextPath()%>/search.do";
    form.setAttribute("target", "_blank");
    document.form.submit();
}

Struts 構成ファイル:

<action path="/search" type="com.action.MyAction"
     name="form" scope="session" validate="false"
     parameter="search">
     <forward name="success" path="tile.view"/> 
</action>

<action path="/matrixSearch"
    type="com.action.MyAction"
    name="form" parameter="searchMatrix"
    scope="request" validate="false">
    <forward name="success" path="/matrix_search.jsp"/>
    <forward name="failure" path="tile.view"/>  
</action>
4

1 に答える 1

0

私はついに答えを見つけました。2 つの問題がありました。最初の問題は、次のステートメントにありました。 form.setAttribute("target", "_blank");

何らかの理由で、この属性は次のボタン クリックの間も保持されていました。だから私は私の他の機能に以下を追加しました

form.setAttribute("対象", "_self");

2 つ目の問題は、clickSearchFunction() に問題があったことです。この関数は長いので、質問ではここにコード全体を書きませんでした。関数内のステートメントの 1 つは、不要になったために削除したフィールドにアクセスしていました。その行を削除したところ、魅力的に機能しました。

この質問に答えてくれたすべての人に感謝します。

于 2012-09-06T21:57:37.153 に答える