0

jQueryUIプラグインを使用した「DatePicker」であるサーバーカスタムコントロール(.NET)を開発しています。だから、私は webResource としてロードされる次のスクリプトを持っています:

JavaScript

$(function () {
    $("#" + ctrlInput).datepicker({
        maxDate: MaxDate,
        minDate: MinDate
    });
});

ご覧のとおり、私は JavaScript 変数を持っているので、スクリプトと変数をロードするために、次のことを行います。

C#

        string javascriptVariables = String.Format(
            "var MinDate = '{0}'; var MaxDate = '{1}'; var ctrlInput = '{2}';",
            MinDate ?? DateTime.MinValue.ToShortDateString(), 
            MaxDate ?? DateTime.MaxValue.ToShortDateString(),
            _textBox.ClientID
        );

        // Load javascript variables (it will be load every time i add a control)
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "dateValues" + _textBox.ClientID, javascriptVariables, true);

        // Load jQueryPlugin (it is loaded only once, and this is the problem)
        Page.ClientScript.RegisterClientScriptResource(this.GetType(), "[[resourceName]]");

それは正常に動作します。問題は、このコントロールをページに複数回追加したときです。

これは、スクリプト変数が正常にロードされているためですが、RegisterClientScriptResource は jQuery プラグインを再度ロードしません! そして、負荷を強制する方法がわかりません!リソースキーをRegisterClientScriptResourceに設定できないため

これを解決する方法を知っている人はいますか?

ありがとう

4

1 に答える 1

0

私はあなたが問題を正しい方法で取っているとは思わない。

  • グローバル変数 (js で) を使用するのは、実際にはローカルでしか使用されない場合は特に、非常に悪い考えです。ソース
  • jQuery または jQuery プラグインを複数回ロードすることも、バグの原因になる可能性があります。ソース

私がすることは、データ属性のような変数を JavaScript に渡す別の方法を考えることです。

おそらく、サーバー コントロールから生成された html 入力があり、日付のデータ属性を追加します。

<input type="text" ... data-mindate="01/01/2013" data-maxdate="12/31/2013" />

次のステップは、グローバル変数を datepicker 関数に渡す代わりに、データ属性を使用することです:

$('#whatever').data('mindate');

また

$('#whatever').attr('data-mindate');

そして速いデモ: http://jsfiddle.net/JjemN/

于 2013-07-03T15:17:50.657 に答える