在javascript中是空的空白

是否有一个JavaScript等价于isNullOrWhitespace,所以我可以检查客户端的文本框是否有任何文本,不只是空格或空/空?

我宁愿在客户端做这件事,比回发内容和validation服务器端,即使我也会这样做。

谢谢!

很容易推出自己的 :

 function isNullOrWhitespace( input ) { if (typeof input === 'undefined' || input == null) return true; return input.replace(/\s/g, '').length < 1; } 

对于一个简洁的现代跨浏览器实现,只要做到:

 function isNullOrWhitespace( input ) { return !input || !input.trim(); } 

这是jsFiddle 。 下面的注释。


目前接受的答案可以简化为:

 function isNullOrWhitespace( input ) { return (typeof input === 'undefined' || input == null) || input.replace(/\s/g, '').length < 1; } 

并利用谬误,甚至进一步:

 function isNullOrWhitespace( input ) { return !input || input.replace(/\s/g, '').length < 1; } 

trim()在所有最新的浏览器中都可用 ,所以我们可以select删除正则expression式:

 function isNullOrWhitespace( input ) { return !input || input.trim().length < 1; } 

并添加更多的狡猾的混合,产生最终(简化)的版本:

 function isNullOrWhitespace( input ) { return !input || !input.trim(); } 

不,但你可以写一个

 function isNullOrWhitespace( str ) { // Does the string not contain at least 1 non-whitespace character? return !/\S/.test( str ); } 
 document.formname.formelement.value == '' 

为我做了诡计!

编辑:检查这个链接

您可以使用正则expression式/\S/来testing一个字段为空或空白。

例如:

 if(textBoxVal.match(/\S/){ // field is invalid (empty or spaces) } 

你必须自己写:

 function isNullOrWhitespace(strToCheck) { var whitespaceChars = "\s"; return (strToCheck === null || whitespaceChars.indexOf(strToCheck) != -1); } 

trim()是一个有用的string函数,JS缺失..

添加它:

 String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,"") } 

然后: if (document.form.field.value.trim() == "")

拉两个最好的答案的相关部分,你会得到这样的东西:

 function IsNullOrWhitespace(input) { if (typeof input === 'undefined' || input == null) return true; return !/\S/.test(input); // Does it fail to find a non-whitespace character? } 

这个答案的其余部分只针对那些对这个答案和德克斯特答案之间的performance差异感兴趣的人。 两者都会产生相同的结果,但是这个代码稍微快一点。

在我的电脑上,对以下代码使用QUnittesting:

 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."); 

结果是:

  • RegExp.replace方法= 33 – 37毫秒
  • RegExp.test方法= 11 – 14毫秒