Non voglio che un utente inserisca spazi in un campo di testo. Non voglio che invii la convalida, ma piuttosto: uno spazio non verrà visualizzato nel campo di testo quando lo fanno clic.restrizione angolare per non consentire spazi nel campo di testo
risposta
<input ng-model="field" ng-trim="false" ng-change="field = field.split(' ').join('')" type="text">
Aggiornamento: Per migliorare la qualità del codice è possibile invece creare direttive personalizzate. Ma non dimenticare che la tua direttiva dovrebbe impedire l'input non solo da tastiera, ma anche da incollare.
<input type="text" ng-trim="false" ng-model="myValue" restrict-field="myValue">
Qui è importante aggiungere l'attributo ng-trim = "falso" per disabilitare il taglio di un input.
angular
.module('app')
.directive('restrictField', function() {
return {
restrict: 'AE',
scope: {
restrictField: '='
},
link: function (scope) {
// this will match spaces, tabs, line feeds etc
// you can change this regex as you want
var regex = /\s/g;
scope.$watch('restrictField', function (newValue, oldValue) {
if (newValue != oldValue && regex.test(newValue)) {
scope.restrictField = newValue.replace(regex, '');
}
});
}
};
});
Perché usare un 'split()' seguito da un 'join()' se si può usare invece un semplice 'replace()'? – PLPeeters
La risposta selezionata è probabilmente non molto unobtrusive. E se hai bisogno di usarlo in più posti, finirai con il codice duplicato.
Preferisco impedire l'immissione di spazi utilizzando la seguente direttiva.
app.directive('disallowSpaces', function() {
return {
restrict: 'A',
link: function($scope, $element) {
$element.bind('input', function() {
$(this).val($(this).val().replace(/ /g, ''));
});
}
};
});
Questa direttiva può essere invocato in questo modo:
<input type="text" disallow-spaces>
Questa è una soluzione molto più pulita rispetto alla risposta selezionata. – GEMI
Cosa accadrebbe se l'utente avesse incollato una stringa con spazi per un input? –
@IlyaLuzyanin Buona domanda. La mia direttiva originale probabilmente non avrebbe funzionato in quel caso. Ho sostituito la mia risposta con una direttiva che tiene conto degli spazi incollati. –
della direttiva Jason ha scritto non ha funzionato per me. Ho dovuto cambiare return false a: e.preventDefault() in questo modo:
app.directive('disallowSpaces', function() {
return {
restrict: 'A',
link: function($scope, $element) {
$element.bind('keydown', function(e) {
if (e.which === 32) {
e.preventDefault();
}
});
}
}
});
non riuscito a incollare il testo –
vedo. Beh, questo funziona per prevenire caratteri speciali, forse è adattabile anche per non consentire spazi. Incollare non funzionerà qui: http://kopy.io/KNoU1 – Bento
Questo funziona per impedire di entrare eventuali caratteri speciali compresi gli spazi:
app.directive('noSpecialChar', function() {
return {
require: 'ngModel',
restrict: 'A',
link: function(scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function(inputValue) {
if (inputValue == null)
return ''
let cleanInputValue = inputValue.replace(/[^\w]|_/gi, '');
if (cleanInputValue != inputValue) {
modelCtrl.$setViewValue(cleanInputValue);
modelCtrl.$render();
}
return cleanInputValue;
});
}
}
});
Se si vuole raggiungere è senza scrivere direttiva
ng-keydown="$event.keyCode != 32 ? $event:$event.preventDefault()"
- 1. Controllare se il campo testo Swift contiene non-spazi
- 2. Impedisci tastiera personalizzata nel campo di testo
- 3. Rails 3: Come faccio a convalidare per consentire spazi (""), ma non nullo (NULL nel database)
- 4. Come posso non consentire gli aggiornamenti tranne per un campo?
- 5. MaxLength restrizione per il campo MultiLineText in SDL Tridion 2011
- 6. testo predefinito nel campo di input
- 7. Il campo di inserimento del testo non funziona nel safari
- 8. HTML non visualizzato nel campo di testo Django
- 9. Seleziona testo nel campo di testo di UIAlertController
- 10. direttiva angolare: usando ng-modello nel campo di applicazione isolare
- 11. Campo di testo non modificabile
- 12. UI Test eliminazione del testo nel campo di testo
- 13. Attendi fino al testo presente nel campo di testo
- 14. Selenium Webdriver: immissione del testo nel campo di testo
- 15. JasperReport - avvolge il testo per mostrare il testo lungo nel campo di testo
- 16. scaricare i file con spazi nel loro nome - restrizione tramite htaccess
- 17. per l'installazione angolare 2 Materiale da NPM - Token non riconosciuto nel testo di partenza
- 18. Restrizione della JVM per non invocare GC
- 19. Restrizione di Google places.AutocompleteService() in un paese in Angolare - Non funzionante
- 20. Solr "Testo campo non definito"
- 21. espressione regolare per consentire solo numeri nel campo di 1-20
- 22. Come visualizzare testo nel campo password
- 23. completamento automatico non consentire l'immissione di testo libero?
- 24. SQL Server trova e sostituisce nel campo TESTO
- 25. Restrizione IP con htaccess
- 26. Reg. Per campo che consente numeri e spazi
- 27. Prevenire l'immissione di caratteri speciali nel campo di testo html
- 28. Restrizione di elementi vuoti in xsd
- 29. Includere spazi in carattere angolare Limite
- 30. Utilizzo di 'require' nel componente angolare
Cosa hai provato fino ad ora? Ti suggerirei di scrivere una direttiva personalizzata che guardi keyCode su keydown e intraprenda le azioni appropriate. –