0

セットアップ: 私は、過去に仕事をした小さな会社のために、asp.net 複合コントロール ライブラリを構築しました。また、汎用の jquery 検証ライブラリも作成しました (jquery 検証プラグインは使用しませんでした)。コントロール アイテムのマークアップ自体で、開発者は "RequiredField='true'" や "DataValidation='Date'" などの属性を追加して、適切な検証を実行できます。次に、複合コントロールの render メソッドで、REQUIRED や DATEVALIDATOR などのクラスをテキスト ボックスの cssclass リストに追加します。document.ready メソッドで、これらの特定のクラスを探し、テキスト ボックスの onchange イベントをそのコントロールに関連付けます。

問題: これは今のところ問題なく動作しますが、2 つの問題があります: 1) レンダリングされた入力マークアップの class 属性を、CSS とは関係のないものに使用することにあまり慣れていませんが、よくわかりません。マークアップが引き続き有効な HTML であることを可能にする他の場所に置くことができます。このクライアント側の検証を行う別の方法はありますか?

2) これは #1 への単なる追加ですが、コントロールの属性オプションとして正規表現の検証を追加したいのですが、jquery 検証ロジックを css クラスに関連付ける現在の方法を使用するという考えは好きではありません。それを行うには、レンダリングされた出力をマークして、一般的なjqueryがそれを取得し、どの検証を行うべきかを知ることができる他の方法を好むでしょう。

どんな提案も非常に役に立ち、感謝しています!

4

1 に答える 1

0

技術的には CSS クラスでなくても、クラスとの関連付けは問題ありません。また、データ属性タグを検討しましたか? それらは HTML5 ですが、私はそれらを使用してメタ データを割り当て、途方もない量のクラスの代わりにデータ属性を使用しました。たとえば、コントロールに data- 属性を追加することができます: 'data-required=' および 'data-date-validator=' その後、それに応じて値を設定し、null 値を false として扱うことができます。このようにして、これらのデータ属性の束を要素にアタッチして、特定の情報を読み取ることができます。

例:

$(function () {
    // isRequired would == true
    var isRequired = $("#container").attr("data-required");
});
于 2012-12-20T21:35:33.513 に答える