2013-08-08 14 views
12

Ich benutze typeheads UI Bootstrap-Komponente und möchte die Auswahl zur Validierung meines Formulars erzwingen. Ist es möglich, es zu konfigurieren, um den Eingang ungültig zu setzen, wenn "typeahead-editable" auf false gesetzt ist und der Benutzer einen "bad" -Wert eingibt oder ich eine Anweisung dafür schreiben sollte (aber wie?)?Setze Eingang ungültig, wenn typeahead-editierbar false ist

Dank

UPDATE 2013.08.09 09.54: Was Sie über die folgende Lösung denken Sie:

 
var formValidatorsModule = angular.module('app.validator.formValidator', []); 

formValidatorsModule.directive('typeaheadForceSelection', function() { 
    return { 
     require : 'ngModel', 
     link : function(scope, elm, attrs, ctrl) { 
      ctrl.$parsers.push(function(viewValue) { 
       if (viewValue == undefined) { 
        ctrl.$setValidity('typeaheadForceSelection', false); 
       } else { 
        ctrl.$setValidity('typeaheadForceSelection', true); 
       } 
       return viewValue; 
      }); 
     } 
    }; 
}); 
+0

Dieser Fehler wurde ab 2016 behoben, lol ... siehe bottom: http://plnkr.co/edit/NtGXL7uPLYKCHESnZyxs?p=preview –

Antwort

17

Die typeahead Richtlinie von http://angular-ui.github.io/bootstrap/ bereits Eingänge zu den Spielen zur Begrenzung Unterstützung hat (Mit anderen Worten, Menschen können so binden, dass nur Werte modelliert werden, die als Übereinstimmungen im Typahead-Popup verfügbar sind. Sie können dies tun, indem Sie einfach das Attribut typeahead-editable='false' setzen.

Bitte beachten Sie, dass das Setzen dieses Attributs auf falsenicht verhindert, dass Menschen ungültige Werte eingeben. Es wird nur sichergestellt, dass eine entsprechende Eingabe als ungültig markiert wird und ein bereitgestellter Wert nicht an das Modell gebunden ist.

+0

Ich weiß, dass editierbare auf false erlauben den Benutzer einen beliebigen Wert eingeben. Es stellt einfach nicht das Modell ein. Was ich seltsam fand, ist, dass das Eingabefeld nicht "ungültig" ist, wenn der Benutzer einen nicht auswählbaren Wert eingibt. : [Beispiel] (http://pnnr.co/edit/KblOIRKHK5PdEIPvBCFV?p=preview). Oder ich verstehe etwas nicht ... –

+0

Ich aktualisiere meine "Lösung" –

+0

@JulienMeyer Ich sehe - Sie möchten auch Gültigkeits-Flag entsprechend setzen, oder? Das klingt vernünftig, fühlen Sie sich frei, Problem dafür in https://github.com/angular-ui/bootstrap/issues?state=open –

Verwandte Themen