我有一个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的新手。
谢谢
答案 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);
}
}
});
});
答案 2 :(得分:0)
试试这个:
$('#tbPublishDates').change(function () {
alert('changed');
if ($(this).val().length > 60) {
$(this).css('width','200');
} else {
$(this).css('width','90');
}
});