更改表单操作 onchange() 选项字段并提交相同的表单不起作用

chnage form action onchange() option filed and submit the same form not working

我有一个表单,其中有一个下拉列表 select离子框。我的要求是当用户从 select 框中更改选项时,表单操作应相应更改并且表单应自动提交。我的表单部分中有以下代码:

<form id="topicSelectionFormId" action="${headerLink.topicUrl}" method="GET">
    <select id="topic-option-id" class="dd-custome-new" onchange="changeTopic(this)">
        <c:forEach items="${headerLink.topicList}" var="topic">
            <option value="${topic.menuItemId}" ${topic.menuItemId == headerLink.topicId ? 'selected' : ''}>${topic.name}</option>
        </c:forEach>
    </select>
</form>

然后我有 javascript 代码来处理表单操作更改部分:

<script>
function changeTopic(sel){
    var topicId = sel.value;
    var formAction = $('#topicSelectionFormId').prop('action') + topicId;
    alert(formAction);
    $("#topicSelectionFormId").attr("action", formAction);
    $("#topicSelectionFormId").submit();
}
</script>

警报显示了我需要的正确的表单操作。但是表单没有提交到想要的url。有人可以帮忙吗?

我认为您需要在操作中设置为所需的 url.. 而不是 formAction

    function changeTopic(sel){
        var topicId = sel.value;
        document.topicSelectionFormId.action = topicId;
        document.topicSelectionFormId.submit();
    }
    <form name="topicSelectionFormId" action="action-default" method="GET">
      <select id="sss" onchange="changeTopic(this);">
        <option value="action1">action1</option>
        <option value="action2">action2</option>
      </select>
    </form>

您的代码在我的 IE11 浏览器中完美运行。在浏览器的开发人员工具中,检查 network ,您的请求是否符合要求 url 以及您收到的响应。

这不是我的答案,但我没有足够的声誉来评论你的问题,所以写在这里