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



4 Answers

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

jquery onsubmit

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 mia soluzione semplice:

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

È lavoro per me.




Prova ad attivare l'evento () nella tua funzione:

$("form").trigger('submit'); // and then... do submit()



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");



Related