2

ユーザーがいくつかの日付を選択できる MultiDatesPicker コントロールがあります。ユーザーが日付の一部を選択すると、日付が自動的に入力される te​​xtarea オブジェクト。すべてが正常に機能しています。私が今やりたかったのは、そのテキストエリアの長さをチェックして、長さが > 60 の場合は幅を 200px に変更し、<=60 の場合は幅を 90 にすることです。私は次のことを行いました:

 <script type="text/javascript">
    $(document).ready(function () {
        $.datepicker.setDefaults($.datepicker.regional['el']);
        $('#cPublDates').multiDatesPicker({
            altField: '#tbPublishDates'
        });
        $(function () {
            $('#tbPublishDates').change(function () {
                alert('changed');
                if ($(this).val().length > 60) {
                    $(this).width(200);
                } else {
                    $(this).width(90);
                }
            });
        });
    });
</script>

オブジェクトは

        <div class="pulicationBox">
        <span id="cPublDates"></span>
        <asp:TextBox ID="tbPublishDates" runat="server" ClientIDMode="Static"  TextMode="MultiLine" Rows="5" Width="90px" />
    </div>

change() イベントが発生していないため、機能しませんでした。#tbPublishDates は、テキストエリアの ID です。私はjQueryの初心者なので、アイデアやコード修正は大歓迎です。

ありがとうございました

4

3 に答える 3

4

テキストボックスへの動的バインディングを試してみてください...

また、jQuery ライブラリ バージョン 1.7 以降が含まれていることを確認してください。

<script type="text/javascript">
$(document).ready(function () {
    $.datepicker.setDefaults($.datepicker.regional['el']);
    $('#cPublDates').multiDatesPicker({
        altField: '#tbPublishDates'
    });

        $('#tbPublishDates').on('change', function () {
            alert('changed');
            if ($(this).val().length > 60) {
                $(this).width(200);
            } else {
                $(this).width(90);
            }
        });
});

于 2012-09-07T06:43:17.783 に答える
1

おそらくあなたの問題は、テキストエリアに値を追加するマルチデイピッカーであるため、jquery change() がトリガーされないためです。代わりに multidatepicker イベント onSelect() を使用して、テキストエリアの長さを確認することをお勧めします。

<script type="text/javascript">
$(document).ready(function () {
$.datepicker.setDefaults($.datepicker.regional['el']);
$('#cPublDates').multiDatesPicker({
    altField: '#tbPublishDates',
    onSelect: function(){
        alert('changed');
        if ($('#tbPublishDates').val().length > 60) {
            $('#tbPublishDates').width(200);
        } else {
            $('#tbPublishDates').width(90);
        }

   }
});

});

http://multidatespickr.sourceforge.net/のドキュメントを参照してください。

于 2012-09-07T07:38:41.527 に答える
0

これを試してください:

$('#tbPublishDates').change(function () {
        alert('changed');
        if ($(this).val().length > 60) {
            $(this).css('width','200');
        } else {
             $(this).css('width','90');
        }
    });
于 2012-09-07T06:47:16.063 に答える