70

String.IsNullOrWhitespaceクライアント側のテキストボックスに表示されているテキストがあるかどうかを確認できるように、.NET に相当する JavaScript はありますか?

テキストボックスの値をポストバックしてサーバー側の検証のみに依存するよりも、最初にクライアント側でこれを行うことをお勧めします。

4

8 に答える 8

88

簡潔な最新のクロスブラウザー実装の場合は、次のようにします。

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() は最近のすべてのブラウザで利用できるため、オプションで正規表現を削除できます。

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

そして、ミックスにもう少し虚偽を加えて、最終的な (簡略化された) バージョンを生成します。

function isNullOrWhitespace( input ) {
  return !input || !input.trim();
}
于 2015-09-26T18:44:25.950 に答える
86

あなた自身を転がすのは簡単です:

function isNullOrWhitespace( input ) {

    if (typeof input === 'undefined' || input == null) return true;

    return input.replace(/\s/g, '').length < 1;
}
于 2011-04-05T22:46:48.627 に答える
4

いいえ、でもあなたはそれを書くことができます

function isNullOrWhitespace( str )
{
  // Does the string not contain at least 1 non-whitespace character?
  return !/\S/.test( str );
}
于 2011-04-05T22:48:13.050 に答える
0

正規表現を使用して/\S/、フィールドが空白であるかどうかをテストし、それをnullチェックと組み合わせることができます。

元:

if(textBoxVal === null || textBoxVal.match(/\S/)){
    // field is invalid (empty or spaces)
}
于 2011-04-05T22:46:51.090 に答える
0

自分で書く必要があります:

function isNullOrWhitespace(strToCheck) {
    var whitespaceChars = "\s";
    return (strToCheck === null || whitespaceChars.indexOf(strToCheck) != -1);
}
于 2011-04-05T22:50:48.033 に答える
0

2 つの最良の回答の関連部分を引き出すと、次のようになります。

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

この回答の残りの部分は、この回答とデクスターの回答のパフォーマンスの違いに関心のある人のみを対象としています。どちらも同じ結果になりますが、このコードの方がわずかに高速です。

私のコンピューターでは、次のコードに対して 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.");

結果は次のとおりです。

  • RegExp.replace メソッド = 33 ~ 37 ミリ秒
  • RegExp.test メソッド = 11 ~ 14 ミリ秒
于 2015-06-11T22:13:43.780 に答える
0

trim()JSに欠けている便利な文字列関数です..

それを追加します:

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

それで:if (document.form.field.value.trim() == "")

于 2011-04-05T22:49:55.383 に答える