javascript — запуск по отправке из функции отправки

Можно ли вызвать событие onSubmit формы, вызвав его с

function submitEdit(){
document.getElementById("edit").submit();
};

ЭТОТ ПУТЬ НЕ РАБОТАЕТ

Форма:

echo "<form id='edit' onsubmit='validate(flag, typeFlag)' method='post' style='width: 100%;height:86%;'>";`

Событие onSubmit:

window.flag=false;
var typeFlag;

function validate(flag, typeFlag) {
if   ( (flag==true) && (typeFlag==true) ){
document.getElementById("edit").setAttribute('target', '_self');
document.getElementById("edit").action ="date.php";
} else if ( (flag==true) && (typeFlag==false) ){
document.getElementById("edit").setAttribute('target', '_blank');
document.getElementById("edit").action ="date_PDF.php";
} else
alert("Select an aircraft");
}

Я делаю это правильно? Мне нужно отправить эту форму, нажав на переключатель.

echo '<td class="c3" style="color: #f79393">
<div class="radio">
<label><input type="radio" name="name_check" onclick="typeFlag=true; submitEdit();" class="c3" value="in" id="c3" '; if($flag) echo'checked'; echo '>in</label>
</div>
</td>';

Благодарю вас!

0

Решение

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

function submitEdit(){

var ele = document.getElementById('edit');
ele.submit();


var event = new Event('submit', {
'bubbles': true,
'cancelable': true
});
ele.dispatchEvent(event);

}
submitEdit();

function validate() {
console.log('form submitted');
}
<form id='edit' onsubmit='validate()' method='post' style='width: 100%;height:86%;'>
<input type='text' value='name'/>
</form>
0

Другие решения

Можно ли вызвать onSubmit с помощью .submit ()?

Нет, это невозможно, validate() функция никогда не будет уволена. От MDN около submit() :

При непосредственном вызове этого метода событие отправки не возникает (в
в частности, обработчик события onsubmit формы не запускается), и
проверка ограничений также не запускается.

Тогда, так как у вас нет action атрибут в вашем <form>когда вы выполняете document.getElementById("edit").submit(); Ничего не произошло.

0

По вопросам рекламы [email protected]