是否存在与.NET String.IsNullOrWhitespace
等效的JavaScript,以便我可以检查客户端的文本框中是否有任何可见文本?
我宁愿在客户端做这个,而不是回发文本框值,只依靠服务器端验证,即使我也会这样做。
答案 0 :(得分:67)
roll your own很容易:
function isNullOrWhitespace( input ) {
if (typeof input === 'undefined' || input == null) return true;
return input.replace(/\s/g, '').length < 1;
}
答案 1 :(得分:54)
对于简洁的现代跨浏览器实现,只需执行:
function isNullOrWhitespace( input ) {
return !input || !input.trim();
}
这里是jsFiddle。以下注释。
currently accepted answer可以简化为:
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() is available in all recent browsers,因此我们可以选择删除正则表达式:
function isNullOrWhitespace( input ) {
return !input || input.trim().length < 1;
}
并在混音中添加更多的虚假,产生最终(简化)版本:
function isNullOrWhitespace( input ) {
return !input || !input.trim();
}
答案 2 :(得分:3)
function isNullOrWhitespace( str )
{
// Does the string not contain at least 1 non-whitespace character?
return !/\S/.test( str );
}
答案 3 :(得分:0)
您可以使用正则表达式/\S/
来测试字段是否为空格,并将其与空检查结合起来。
<强>实施例强>
if(textBoxVal === null || textBoxVal.match(/\S/)){
// field is invalid (empty or spaces)
}
答案 4 :(得分:0)
trim()
是一个有用的字符串函数,JS缺少..
添加:
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,"") }
然后:if (document.form.field.value.trim() == "")
答案 5 :(得分:0)
你必须自己编写:
function isNullOrWhitespace(strToCheck) {
var whitespaceChars = "\s";
return (strToCheck === null || whitespaceChars.indexOf(strToCheck) != -1);
}
答案 6 :(得分:0)
拉出两个最佳答案的相关部分,你会得到这样的结论:
function IsNullOrWhitespace(input) {
if (typeof input === 'undefined' || input == null) return true;
return !/\S/.test(input); // Does it fail to find a non-whitespace character?
}
此答案的其余部分仅适用于对此答案与Dexter答案之间的性能差异感兴趣的人。两者都会产生相同的结果,但这段代码稍快一些。
在我的计算机上,对以下代码使用QUnit测试:
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.");
结果是:
答案 7 :(得分:0)
尝试一下
/**
* 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;
}
您可以像这样使用它
isStringNullOrWhiteSpace('Your String');