HTML formulář se dvěma tlačítky pro odeslání a dvěma atributy „target“.

Mám jeden HTML

.

Formulář má pouze jeden action="" atribut.

Chtěl bych však mít dva různé target="" atributy, v závislosti na tom, na které tlačítko kliknete pro odeslání formuláře. Toto je pravděpodobně nějaký efektní kód JavaScript, ale nemám ponětí, kde začít.

Jak mohu vytvořit dvě tlačítka, z nichž každé odesílá stejný formulář, ale každé tlačítko dává formuláři jiný cíl?

Odpověď

Je vhodnější přistupovat k tomuto problému s mentalitou, že formulář bude mít výchozí akci spojenou s jedním tlačítkem pro odeslání a poté alternativní akci svázanou s obyčejným tlačítkem. Rozdíl je v tom, že kterýkoli z nich bude pod odesláním, bude ten, který se použije, když uživatel odešle formulář stisknutím klávesy Enter, zatímco druhý bude spuštěn pouze tehdy, když uživatel výslovně klikne na tlačítko.

Každopádně s ohledem na to by to mělo fungovat:

<form id='myform' action='jquery.php' method='GET'>
    <input type='submit' id='btn1' value='Normal Submit'>
    <input type='button' id='btn2' value='New Window'>
</form>

S tímto javascriptem:

var form = document.getElementById('myform');
form.onsubmit = function() {
    form.target = '_self';
};

document.getElementById('btn2').onclick = function() {
    form.target = '_blank';
    form.submit();
}

Přístupy, které vážou kód na událost kliknutí tlačítka Odeslat, nebudou v IE fungovat.