5

私は基本的に私のページで次の検証を行っています-テキストボックス内の説明は単語'と'を除いて3単語を超えることはできないという単語規則です。私はC#で次のサーバー側の検証を実装しましたが、これは正常に機能しています

if (Desc.Trim().ToString() != "")
{
    MatchCollection collection = Regex.Matches(Desc.Replace("and", ""), @"[\S]+");

    if (collection.Count > 3)
    {
        ErrorMsg.Append("Description should contain at most 3 words(excluding 'and').");
        ErrorMsg.Append("\\n");
    }
}

ただし、Javascriptで同じように動作させるのに問題があります。私は次のことを試しましたが、これまでのところ機能していません。Javascriptの知識が豊富な人がエラーを確認できることを期待しています。ifは、ページで起動するより大きな検証関数の一部であることに注意してください-アラートは、これに入るかどうかを確認するためにありました(そうではありません)-これがブロックされると、ページ上の残りのJSは正常に動作しています。

if (Desc.val().trim() != "")
{
    alert('1');
    !regexWordRule.test(Desc.val());
    alert('2');

    if (Desc.val().match(regexWordRule).length > 3)
    {
        errorText += "Description should contain at most 3 words(excluding 'and').";
    }

    valid = false;
}

以下は、jsファイルの最上部で定義されている私のregexWordRuleです。

var regexWordRule = /[\S]+/;
4

2 に答える 2

2

より良い解決策を見つけることができますが、このアプローチが頭に浮かんだので、私はそれを投稿しています:

var input = "and lorem and ipsum";

// remove ands
var deandizedinput = input.replace(/\band\b/g, ' ');

// replace all white spaces with a single space
var normalizedinput = deandizedinput.replace(/\s+/g, ' ');

// split the input and count words
var wordcount = normalizedinput.trim().split(' ').length;

ここでフィドル。

于 2012-09-10T12:15:06.097 に答える
1

MVC3を使用している場合は、モデルでリモート検証(RemoteAttribute)を使用できます。または、ajaxリクエストを使用してそのような種類の検証を手動で行うことができます。

これにより、コードが重複するのを防ぐことができます。

于 2012-09-10T13:01:15.430 に答える