Запуск по отправке из функции отправки - PullRequest
0 голосов
/ 02 июля 2018

Можно ли вызвать событие 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>';

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

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

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

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

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

0 голосов
/ 02 июля 2018

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

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>
...