Dlaczego ludzie zawsze używają jQuery, kiedy nie jest to konieczne?
Dlaczego ludzie nie mogą po prostu używać prostego JavaScript?
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
to funkcja, którą chcesz wywołać podczas przesyłania formularza.
Informacje EventTarget.addEventListener
, zapoznaj się z dokumentacją na MDN .
Aby anulować submit
zdarzenie natywne (zapobiec przesłaniu formularza), użyj .preventDefault()
w funkcji wywołania zwrotnego,
document.querySelector("#myForm").addEventListener("submit", function(e){
if(!isValid){
e.preventDefault(); //stop form from submitting
}
});
Wysłuchanie submit
wydarzenia z bibliotekami
Jeśli z jakiegoś powodu zdecydowałeś, że biblioteka jest konieczna (już z niej korzystasz lub nie chcesz zajmować się problemami z różnymi przeglądarkami), oto lista sposobów odsłuchiwania zdarzenia przesyłania we wspólnych bibliotekach:
jQuery
$(ele).submit(callback);
Gdzie ele
jest odwołaniem do elementu formularza i callback
jest odwołaniem do funkcji zwrotnej. Odniesienie
<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(){ /*...*/ };
Bardzo proste, gdzie $scope
jest zakres zapewniany przez strukturę wewnątrz twojego kontrolera . Odniesienie
Reagować
<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
}
Po prostu podaj obsługę do onSubmit
rekwizytu. Odniesienie
Inne frameworki / biblioteki
Zapoznaj się z dokumentacją swojego frameworka.
Uprawomocnienie
Zawsze możesz przeprowadzić walidację w JavaScript, ale w HTML5 mamy również natywną walidację.
<!-- Must be a 5 digit number -->
<input type="number" required pattern="\d{5}">
Nie potrzebujesz nawet JavaScript! Jeśli natywna walidacja nie jest obsługiwana, możesz wrócić do walidatora JavaScript.
Demo: http://jsfiddle.net/DerekL/L23wmo1L/
document.forms['yourForm'].onsubmit = function(){}
? AlboaddEventListener
?