检查jQuery中自动填充的textarea的长度

时间:2012-09-07 06:41:51

标签: jquery textarea

我有一个MultiDatesPicker控件,用户可以在其中选择一些日期。 textarea对象自动填充日期,而用户选择其中一些。一切都很好。 我现在喜欢做的是,检查该textarea的长度,以便当长度> 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是textarea的id。 任何想法或代码更正都会受到欢迎,因为我是jQuery的新手。

谢谢

3 个答案:

答案 0 :(得分: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);
            }
        });
});

答案 1 :(得分:1)

可能你的问题是因为它是multidaypicker,它将值添加到textarea,因此jquery change()不会触发。我建议你使用onSelect()的multidatepicker事件来检查textarea的长度。

<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/文档。

答案 2 :(得分:0)

试试这个:

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