2016-05-18 12 views
0

Hallo Ich habe folgen Code:ng einreichen über Drop-Down-und Textarea

<form ng-submit="ctrl.commitEdit(sign)"> 
    <input ng-model="sign.Value"> 
    <input ng-model="sign.Date"> 
    <textarea ng-model="sign.Comment"></textarea> 
    <select ng-model="sign.Property"></select> 
    <button type="submit">Save</button> 
</form> 

Mit meiner Form um meine Komponenten Ich habe versucht, meine Bearbeitungen auf zwei Arten (in meiner Form Ich nenne im speichern ng einreichen ein Methode von meinem Controller, der meine Änderungen speichert):

  • Mit dem Klick auf meine Schaltfläche, die den Typ "senden" hat, ruft es die Funktion in der ng-Übermittlung meines Formulars. Das funktioniert richtig! Es speichert
  • Dann möchte ich auch mit dem Drücken der "Enter" auf meiner Tastatur speichern. Deshalb benutzte ich das Formular ein ng-submit mit meinem Button vom Typ submit. Das funktioniert nur, wenn ich etwas an meinen Eingaben ändere und der Fokus da ist! Wenn ich etwas in meinem Textfeld ändere und ich "Enter" drücke, macht es eine Pause. Wenn ich etwas in meinem Dropdown-Menü ändere und dann "Enter" drücke, öffnet sich das Dropdown-Menü erneut.
  • Also möchte ich mit "Enter" in jeder Hinsicht speichern, auf der Eingabe, wählen Sie und Textarea. Wie kann ich das machen?

    Dank

    Antwort

    1

    Alles, was Sie tun müssen, ist ngKeyup zu verwenden.

    https://docs.angularjs.org/api/ng/directive/ngKeyup

    Gerade sie binden mit Schlüsselcode eingeben, der 13 ist und rufen Sie Ihre Funktion

    Außerdem ist hier eine Richtlinie Sie für Ihre Zwecke einsetzen können.

    app.directive('ngEnter', function() { 
         return function(scope, element, attrs) { 
          element.bind("keydown keypress", function(event) { 
           if(event.which === 13) { 
             scope.$apply(function(){ 
               scope.$eval(attrs.ngEnter); 
             }); 
    
             event.preventDefault(); 
           } 
          }); 
         }; 
    
    +0

    Hallo und vielen Dank für Ihre Antwort. Aber warum funktioniert die ng-submit-Strafe mit meinen Eingaben und mit meinem Textarea und Dropdown nicht? Wenn ich einen Wert in einen meiner Eingänge schreibe und "Enter" drücke, ruft er die Funktion in meinem Controller auf und speichert sie korrekt. Wenn ich das Gleiche in meinem Textbereich mache, wird nur eine neue Zeile im Textfeld erstellt. Das selbe für meine Auswahl, es öffnet das Dropdown wieder und zeigt die Gegenstände an. Liegt dies am Default-Verhalten des Browsers, indem man im Select- oder Textbereich auf Enter drückt? Ich würde mich freuen, wenn ich den ng-submit auf dem select und textarea als Eingabe verwenden könnte ... – MrBuggy

    +0

    Der ng-submit ist nett, weil ich ihn einmal in einem Tag (form) implementieren kann und einfach den Typ gebe " submit "auf meinem Button innerhalb meines Formulars. So ist es einfach, sich um den Code zu kümmern. Ich rufe mal die Funktion an ... – MrBuggy