Как я могу изменить цель формы с javascript? - PullRequest
0 голосов
/ 08 мая 2020

Итак, я пытаюсь изменить цель формы, чтобы открыть новое окно. При любом перенаправлении этой формы используется одно и то же окно, кроме одного. Последняя представляет собой кнопку, которая вызывает пользовательскую функцию javascript, которая должна изменить цель с «_self», установленного по умолчанию, на «_blank», что, по-видимому, выполняет ту работу, которую я хочу.

Это мой тег формы

<html:form action="<%=nomeAction%>" target="_self">
...
    <html:button styleClass="button" property="button" 
    onclick="javascript:redirectOnAnewWindow('mostraConguagli770')">
        <bean:message key="button.mostraConguagli770"/>
    </html:button>
</form>

Итак, это функция js

function redirectOnAnewWindow(event) {
    document.forms[0].action=document.forms[0].action+"?event="+evento;
    //document.forms[0].setAttribute("target", "_blank");
    document.forms[0].target = "_blank";
    document.forms[0].submit();
}

Я пробовал как прокомментированный, так и не прокомментированный, но ни один из них не работал. Так что я не уверен, в чем проблема, но изменение цели формы вручную и установка значения на «_blank» работает отлично, единственная проблема в том, что мне нужно изменить цель только при нажатии этой кнопки.

Есть какой-нибудь способ сделать это? Потому что я поискал его, но не нашел ничего, что решило бы мою проблему

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Я думаю, ваша проблема возникла из-за тега html in, потому что это хорошо работает без.

см.:

Я сделал jsfiddle: https://jsfiddle.net/4puxr6e3/

html

<form action="blabla.html" target="_self">
    <button class="button" onclick="javascript:redirectOnAnewWindow('mostraConguagli770')">
    Redirect
    </button>
</form>

javascript

function redirectOnAnewWindow(event) {
    document.forms[0].action="blibli.html";
    document.forms[0].target = "_blank";
    document.forms[0].submit();
}
1 голос
/ 08 мая 2020

Приведенный ниже код html работает хорошо. Вы можете сослаться на него и соответственно изменить свой код.

  • Если вы нажмете Click Me, а затем Submit, целью будет '_self', так как функция changeFormTarget выполняется вызывается, и форма будет отправлена ​​на той же вкладке.
  • Если вы нажмете Submit, не нажимая Click Me, целью будет '_blank', и форма будет отправлена ​​в новой вкладке.
<html>
    <form action="/somaction" target="_blank">
        <button onclick="changeFormTarget(this)" type="button"> Click Me </button>
        <button type="submit">Submit</button>
    </form>
    <script>
        function changeFormTarget(el) {
            console.log(el.form.target)
            el.form.setAttribute('target', '_self')
            console.log(el.form.target)
        }
    </script>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...