Biorąc pod uwagę ten kod:Jak ręcznie uruchomić sprawdzanie poprawności AngularJS z przycisku znajdującego się poza znacznikami formularza?
<div ng-controller="MyCtrl">
<form ng-submit="onSubmitted()">
Header inputs:
<input type="name" ng-model="sample" required/>
<input type="name" ng-model="sampleX" required/>
<input type="submit" value="This submit triggers validation. But I wanted to put this button at the end of the page"/>
</form>
<hr/>
Some other form here. Think line items
<hr />
<a class="btn" ng-click="/* what could should be put here, so this can trigger the firt form's validation, then submit? */">Wanted this submit button to trigger the validation+submit on the form in which this button doesn't belong</a>
</div>
var app = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.onSubmitted = function() {
alert('submitted!');
};
}
Chcę ostatni guzik, aby uruchomić walidację (potem złożyć, gdy rzeczy są ważne) na pierwszej postaci. W tej chwili tylko przycisk wewnątrz formularza może spowodować zatwierdzenie i przesłanie formularza. Czy istnieje jakiś sposób na przycisk poza formularzem, aby to zrobić?
żywo Test: http://jsfiddle.net/dzjV4/1/
rozważ dodaj do dyspozycji dyrektywę i odłącz wydarzenie click od niego –
Przyjemnie +1 za nową naukę dla mnie, dobrze jest wiedzieć, że można symulować wydarzenie na angularjs. Nie chcę jednak polegać na symulowaniu kliknięcia innego przycisku. Chciałem symulować przesyłanie (w konsekwencji uruchamia sprawdzanie poprawności przed przesłaniem). Chociaż mogę [ukryć przycisk] (http://jsfiddle.net/HFxe3/) na pierwszym formularzu, ale dla mnie jest to kludgy. Jeśli istnieje metoda API do symulacji sprawdzania poprawności przesyłania +, z przyjemnością się tego nauczę i zaakceptuję to jako odpowiedź. – Hao
Myślę, że jeśli wywołasz 'document.getElementById (" myformId ").() 'nie wywoła sprawdzania poprawności klienta, który jest" wbudowany "w nowoczesnych przeglądarkach (HTML5). Ale to zadziała, jeśli dokonasz walidacji w swoim Modelu. Jeśli jednak zrobisz to w ten sposób, będziesz obsługiwał wszystkie przeglądarki, nie tylko nowoczesne. –