两个按钮在初次点击后会触发相同的功能

Two buttons trigger the same function after initial clicks

本文关键字:功能 两个 按钮      更新时间:2023-09-26

我有两个按钮,"搜索"answers"矩阵搜索"。当我第一次点击"搜索"按钮时,它会做它应该做的事情。但如果我点击"搜索按钮后,我点击"矩阵搜索"按钮,它调用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>
我终于找到了答案。有两个问题。第一个问题是以下语句:form.setAttribute("target","_blank");

出于某种原因,即使在我下一次单击按钮时,这个属性也被保留了下来。所以我在我的另一个函数中添加了以下内容

form.setAttribute("target","_self");

第二个问题是我的clickSearchFunction()出现了问题。这个函数很长,所以我的问题中没有把整个代码写在这里。函数中的一条语句是访问一个我已经删除的字段,因为我不再需要它了。我刚刚删除了那句话,它就像一个符咒。

感谢每一个尝试过这个问题的人。