Perché le persone usano sempre jQuery quando non è necessario?
Perché le persone non possono semplicemente usare JavaScript semplice?
var ele = /*Your Form Element*/;
if(ele.addEventListener){
ele.addEventListener("submit", callback, false); //Modern browsers
}else if(ele.attachEvent){
ele.attachEvent('onsubmit', callback); //Old IE
}
callback
è una funzione che si desidera chiamare al momento dell'invio del modulo.
A proposito EventTarget.addEventListener
, consulta questa documentazione su MDN .
Per annullare l' submit
evento nativo (impedire l'invio del modulo), utilizzare .preventDefault()
nella funzione di richiamata,
document.querySelector("#myForm").addEventListener("submit", function(e){
if(!isValid){
e.preventDefault(); //stop form from submitting
}
});
Ascoltare l' submit
evento con le biblioteche
Se per qualche motivo hai deciso che è necessaria una libreria (ne stai già utilizzando una o non vuoi occuparti di problemi tra browser), ecco un elenco di modi per ascoltare l'evento di invio nelle librerie comuni:
jQuery
$(ele).submit(callback);
Dove si ele
trova il riferimento dell'elemento del form ed callback
essendo il riferimento della funzione di callback. Riferimento
<iframe width="100%" height="100%" src="http://jsfiddle.net/DerekL/wnbo1hq0/show" frameborder="0"></iframe>
AngularJS (1.x)
<form ng-submit="callback()">
$scope.callback = function(){ /*...*/ };
Molto semplice, dov'è $scope
l'ambito fornito dal framework all'interno del controller . Riferimento
Reagire
<form onSubmit={this.handleSubmit}>
class YourComponent extends Component {
// stuff
handleSubmit(event) {
// do whatever you need here
// if you need to stop the submit event and
// perform/dispatch your own actions
event.preventDefault();
}
// more stuff
}
Passa semplicemente un gestore onSubmit
all'elica. Riferimento
Altri framework / librerie
Fare riferimento alla documentazione del proprio framework.
Validazione
Puoi sempre eseguire la convalida in JavaScript, ma con HTML5 abbiamo anche la convalida nativa.
<!-- Must be a 5 digit number -->
<input type="number" required pattern="\d{5}">
Non hai nemmeno bisogno di JavaScript! Ogni volta che la convalida nativa non è supportata, è possibile eseguire il fallback a un validatore JavaScript.
Demo: http://jsfiddle.net/DerekL/L23wmo1L/
document.forms['yourForm'].onsubmit = function(){}
? OppureaddEventListener
?