Existe-t-il un équivalent JavaScript du code String.IsNullOrWhitespace
de .NET afin que je puisse vérifier si une zone de texte côté client contient du texte visible?
Je préférerais commencer par le côté client plutôt que de publier la valeur de la zone de texte et ne compter que sur la validation côté serveur, même si je le ferai également.
Il est assez facile de rouler le vôtre :
function isNullOrWhitespace( input ) {
if (typeof input === 'undefined' || input == null) return true;
return input.replace(/\s/g, '').length < 1;
}
Pour une implémentation multi-navigateur moderne et succincte, il suffit de faire:
function isNullOrWhitespace( input ) {
return !input || !input.trim();
}
Voici le jsFiddle . Notes ci-dessous.
La réponse actuellement acceptée peut être simplifiée comme suit:
function isNullOrWhitespace( input ) {
return (typeof input === 'undefined' || input == null)
|| input.replace(/\s/g, '').length < 1;
}
Et en tirant parti de la fausseté, encore plus loin pour:
function isNullOrWhitespace( input ) {
return !input || input.replace(/\s/g, '').length < 1;
}
trim () est disponible dans tous les navigateurs récents , nous pouvons donc éventuellement supprimer l'expression régulière:
function isNullOrWhitespace( input ) {
return !input || input.trim().length < 1;
}
Et ajoutez un peu plus de fausseté au mélange, donnant la version finale (simplifiée):
function isNullOrWhitespace( input ) {
return !input || !input.trim();
}
non, mais tu pourrais en écrire un
function isNullOrWhitespace( str )
{
// Does the string not contain at least 1 non-whitespace character?
return !/\S/.test( str );
}
Essayez ceci
/**
* Checks the string if undefined, null, not typeof string, empty or space(s)
* @param {any} str string to be evaluated
* @returns {boolean} the evaluated result
*/
function isStringNullOrWhiteSpace(str) {
return str === undefined || str === null
|| typeof str !== 'string'
|| str.match(/^ *$/) !== null;
}
Vous pouvez l'utiliser comme ça
isStringNullOrWhiteSpace('Your String');
En tirant les parties pertinentes des deux meilleures réponses, vous obtenez quelque chose comme ceci:
function IsNullOrWhitespace(input) {
if (typeof input === 'undefined' || input == null) return true;
return !/\S/.test(input); // Does it fail to find a non-whitespace character?
}
Le reste de cette réponse ne concerne que les personnes intéressées par les différences de performances entre cette réponse et celle de Dexter. Les deux produiront les mêmes résultats, mais ce code est légèrement plus rapide.
Sur mon ordinateur, en utilisant un test QUnit sur le code suivant:
var count = 100000;
var start = performance.now();
var str = "This is a test string.";
for (var i = 0; i < count; ++i) {
IsNullOrWhitespace(null);
IsNullOrWhitespace(str);
}
var end = performance.now();
var elapsed = end - start;
assert.ok(true, "" + count + " runs of IsNullOrWhitespace() took: " + elapsed + " milliseconds.");
Les résultats ont été:
Vous pouvez utiliser le regex /\S/
pour vérifier si un champ est un espace, et le combiner avec une vérification nulle.
Ex:
if(textBoxVal === null || textBoxVal.match(/\S/)){
// field is invalid (empty or spaces)
}
trim()
est une fonction chaîne utile qui manque à JS.
Ajoutez le:
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,"") }
Puis: if (document.form.field.value.trim() == "")
Vous devez écrire le vôtre:
function isNullOrWhitespace(strToCheck) {
var whitespaceChars = "\s";
return (strToCheck === null || whitespaceChars.indexOf(strToCheck) != -1);
}