Dovrebbe essere $ (form) di jQuery .submit (); non attivare onSubmit all'interno del tag form?


Answers

Questo lavoro risolverà il problema riscontrato da @Cletus.

function submitForm(form) {
    //get the form element's document to create the input control with
    //(this way will work across windows in IE8)
    var button = form.ownerDocument.createElement('input');
    //make sure it can't be seen/disrupts layout (even momentarily)
    button.style.display = 'none';
    //make it such that it will invoke submit if clicked
    button.type = 'submit';
    //append it and click it
    form.appendChild(button).click();
    //if it was prevented, make sure we don't get a build up of buttons
    form.removeChild(button);
}

Funzionerà su tutti i browser moderni.
Funzionerà su schede / finestre figlio generate (sì, anche in IE <9).
Ed è in vaniglia!

Passa semplicemente un riferimento DOM a un elemento del modulo e si assicurerà che tutti gli ascoltatori collegati, l'onsubmit e (se non ne viene impedito per allora), infine, invii il modulo.

Question

Ho il seguente:

<script type="text/javascript">
function CancelFormButton(button) {
    $(button.form).submit();
}
</script>

<form onsubmit="alert('here');">
<input type="button" value="Cancel" onClick="CancelFormButton(this);" />
</form>

Quando faccio clic sul pulsante "Annulla", l'onsubmit dal tag form non viene attivato.

Questa riga invia invece il modulo correttamente: $(button.form).submit(); ma salta l' alert('here'); all'interno del onsubmit nel tag form.

È corretto o sto facendo qualcosa di sbagliato?

A proposito, in questo caso, voglio questa funzionalità, ma mi chiedo solo se ho intenzione di imbattermi in un problema in un browser in cui viene attivato l'onsubmit.




La soluzione più semplice per ovviare a questo problema è creare un input "temporaneo" con tipo submit e trigger click:

var submitInput = $("<input type='submit' />");
$("#aspnetForm").append(submitInput);
submitInput.trigger("click");



trigger ('submit') non funziona. Il metodo onSubmit non viene attivato. il seguente codice funziona per me, chiama il metodo onSubmit quando si utilizza questo codice:

$("form").find(':submit').click();




La mia soluzione semplice:

$("form").children('input[type="submit"]').click();

È lavoro per me.