2016-05-03 10 views
0

Ich habe ein Auswahlmenü, das Daten aus einer JSON-Datei, Länder der Welt namentlich anzeigt.Angular JS case-insensitive Bindung?

Ich habe ein Textfeld daneben, das daran gebunden ist und die iso 3166 alpha_2 Daten anzeigt (z. B. CH für die Schweiz).

Auch kann der Benutzer den 2-stelligen Code eingeben und der korrekte Name im Menü erscheint.

enter image description here

Mein Problem ist, dass der Benutzer den alpha_2 Wert in Großschreibung muss übereinstimmen. In meinem obigen Beispiel funktioniert die Eingabe von "CH", aber "ch" zeigt keine Übereinstimmungen im Menü an.

Gibt es eine Möglichkeit, dies zu umgehen?

<td> 
    <input type="text" size="4" ng-model="country_import.alpha_2"> 
    </td> 
    <td> 
    <select ng-model="country_import" ng-options="s.name for s in iso3166 track by s.alpha_2" class="form-control input-xs country-menu"></select> 
    </td> 
+0

Sie es autocapitalize können. Siehe hierzu http://stackoverflow.com/questions/15242592/how-to-autocapitalize-an-input-field –

Antwort

2

Gerade .toUpperCase() auf der track by

Variable

<select ng-model="country_import" ng-options="s.name for s in iso3166 track by s.alpha_2.toUpperCase()" class="form-control input-xs country-menu"></select>

Hier ist Plunker ähnlichen Fall: https://plnkr.co/edit/pESocfNey55uZb85RgDE?p=preview

1

Ich würde eine Uhr darauf einrichten, und alles, was ein Benutzer in Großbuchstaben eingibt.

$scope.$watch('country_import.alpha_2', function() { 
     $scope.country_import.alpha_2 = $scope.country_import.alpha_2.toUpperCase(); 
    });