2012-04-13 5 views
2

javascriptでコントロールが有効かどうかを知りたい。コントロールが有効かどうかを教えてくれるAsp.Netに直接クライアント側のAPIがありますか?javascriptでコントロールが有効かどうかを知る良い方法はありますか?

例: 2つのバリデータがテキストボックスに添付されている場合、テキストボックスが有効かどうかを示す関数が必要です。 1つのバリデータが有効でない場合は、falseを返す必要があります。

私にこれを与えることができる機能を見つけることができないようです。ここに私が仕事をしているが、非効率的な小さなヘルパーがあります:

function isControlValid(control) { 
    for (i = 0; i < Page_Validators.length; i++) { 
     var validator = Page_Validators[i]; 
     var controlId = validator.controltovalidate; 
     if ($(control).attr('id') == controlId && validator.isvalid == false) { 
      return false; 
     } 
    } 
    return true; 
} 

誰かが良い選択肢がありますか?

+0

私は好奇心が強いです。 Page_Validatorsの長さは何ですか?ランニング長* IDとプロパティの等価比較は、ページに読み込まれるこれらの物の猥褻な数がない限り、残酷であってはなりません。 –

+0

@エリック:そうです。しかし、私は、APIが組み込まれているかどうかを知りたいと思っていました。 – TCM

答えて

1

以下のコードが有効です。

function isControlValid(control) { 
    var validators = $(control).Validators; 
    var isValid = true; 
    Array.forEach(validtors, function(item) { 
     isValid = isValid && (item.isvalid === true); 
    }); 
    return isValid; 
} 

UPDATE

これは、ページ全体のバリデータが反復されていないので、あなたが提案したものよりも優れています。コントロールに関連付けられているものだけが反復に使用されます。 $(control).Validatorsは、コントロールに関連付けられたバリデータを取得するために使用されます。

+0

私が書いたコードは、すでに動作しています。私はより良い選択肢が必要です。あなたが書いたコードも基本的に同じです。すべてのページのバリデータを繰り返します。 – TCM

+0

Anthony、私が書いたコードは、基本的に、ページのバリデータ全体ではなく、指定されたコントロールに関連付けられたバリデータを繰り返しました。 – Ramesh

+0

ahh ok。私はそれを見落とした。コードを変更しました。私はそれを$(コントロール).Validatorsに変更するだけでした。それが可能であることを知らなかった。ありがとう。 – TCM

関連する問題