2

以下のjqueryでは、「ドット」の前に閉じ括弧「)」が必要です。

.test($……」?

(/^\s*$/.test($(this).val()))

$(document).ready(function () {
    $('#userlogin').css('color', '#cccccc').val('LOGINNAME');   

    $('#userlogin').blur(function () {
        if (/^\s*$/.test($(this).val())) {
            $(this).val('LOGINNAME');
            $(this).css('color', '#cccccc');
            $(this).valid();
        }
    }).focus(function () {
        if ($(this).val() === 'LOGINNAME') {
            $(this).val('');
            $(this).css('color', '#000000');
        }
    });

そうでない場合、なぜですか?そのコードは私には少し奇妙に見えます。

4

4 に答える 4

4

コードは正しいです:

/^\s*$/  // create a regex
  .test( // call the test method on it
    $(this) // create a jquery object
      .val() // call the val method on it
  )

ただし、値はキャッシュできます: var val = $(this).val();. そうすれば、次の行の混乱が少なくなる可能性があります。/yourregex/.test(val)

于 2012-05-18T16:02:03.920 に答える
2

/^\s*$/は正規表現リテラルであり、呼び出されているテスト メソッドがあります。括弧は、より大きな if 条件からのものです。

JavaScript は完全にオブジェクト指向であるため、リテラルにもメソッドを含めることができます。

于 2012-05-18T16:02:26.420 に答える
2
/^\s*$/.test( $(this).val() )

最初の部分は正規表現で、文字列などではありません。/そのため、区切り記号とで開始および終了します/

.matchソースに奇妙なバインドされていないアイテムが浮かんでいるように見えないため、使用すると読みやすい場合があります。

$(this).val().match(/^\s*$/);

この特定の表現を分解すると、次のようになります。

/^   // Beginning of String
\s*  // Space, zero or more times
$/   // End of String

そのため、最初から最後まで、0 個以上のスペースがあり、他に何もない場合、テストは肯定的です。

于 2012-05-18T16:03:17.507 に答える
2

コードは問題ありません。読めないと思うなら、最初に正規表現を作成してみませんか

var regex = /^\s*$/;
if(regex.test($(this).val())
    ...
于 2012-05-18T16:04:03.170 に答える