2013-08-08 9 views
12

Sto utilizzando il componente Bootstrap dell'interfaccia utente typeahead e voglio forzare la selezione per convalidare il mio modulo. E 'possibile configurarlo per impostare l'input non valido quando' typeahead-editable 'è impostato su false e l'utente inserisce un valore "bad" o dovrei scrivere una direttiva per questo (ma come?)?Imposta input non valido quando typeahead-editable è false

Grazie

UPDATE 2013/08/09 09:54: Cosa pensi della seguente soluzione:

 
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

Questo bug è stato corretto a partire dal 2016, lol ... vedere plunker: http://plnkr.co/edit/NtGXL7uPLYKCHESnZyxs?p=preview –

risposta

17

La direttiva typeahead da http://angular-ui.github.io/bootstrap/ ha già il supporto per limitare gli ingressi alle partite (in altre parole, le persone possono legarsi per modellare solo i valori disponibili come corrispondenze nel popup typeahead). Puoi farlo semplicemente impostando l'attributo typeahead-editable='false'.

Si noti che l'impostazione di questo attributo su false sarà non impedire alle persone di digitare valori non validi. Si limiterà a verificare che un input corrispondente sia contrassegnato come non valido e che un valore fornito non sia associato al modello.

+0

So che il set modificabile su false consente all'utente di inserire qualsiasi valore. Semplicemente non imposta il modello. Quello che ho trovato strano è che il campo di input non è "non valido" quando l'utente inserisce un valore non selezionabile. : [Esempio] (http://plnkr.co/edit/KbLOIRKHK5PdEIPvBCFV?p=preview). O non capisco qualcosa ... –

+0

Aggiorna la mia "soluzione" –

+0

@JulienMeyer Vedo - ti piacerebbe anche impostare il flag di validità di conseguenza, giusto? Sembra ragionevole, sentiti libero di aprire un problema per questo in https://github.com/angular-ui/bootstrap/issues?state=open –