2015-10-15 2 views
0

У меня следующий макета HTML таблицы:как установить только для чтения к DatePicker

<table id="mytable"> 
<tbody> 
<tr><td rowspan="2">Row text</td><td><input type="text" value="" readonly /></td><td><input type="text" value="" readonly /></td><td><input type="text" value="" readonly /></td></tr> 
<tr><td><input type="text" value="" /></td><td><input type="text" value="" /></td><td><input type="text" value="" /></td></tr> 
</tbody> 
</table> 

JQuery datepicker прикрепляется с каждым полем ввода строки таблицы, но все поля ввода первой строки предназначены только для чтения. Теперь, когда пользователь выбирает любую дату из второго ряда он добавит 30days к выбранной дате и поместить его в соответствующем поле ввода первой строки с помощью JQuery, как показано ниже:

$('table#mytable > tbody> tr > td > input[type="text"]').datepicker({ 
     dateFormat: 'dd/mm/yy', 
     changeMonth: true, 
     changeYear: true, 
     yearRange: '1900:2016', 
     onClose: function(){ 
      var thisRow = $(this).closest('tr'); 
      var thisCell = $(this).closest('td').index(); 
      var thisDate = $(this).datepicker('getDate'); 
      thisDate.setDate(thisDate.getDate() + 30); 
      thisRow.prev().find('td:eq(' + (thisCell + 1) + ') input[type="text"]').datepicker('setDate', thisDate); 
     }); 
}); 

я столкнулся с двумя проблемами здесь.

1) Я хочу установить дату ввода первой строки таким образом, чтобы она не открывала датупик на клике (она будет использоваться только для отображения даты + 30 дней, которая выбрана из второй строки) , т. е. датапикеры первой строки будут считаны только на чтение.

2) Является ли мой выше код

thisRow.prev() найти (. 'TD: эк (' + (thisCell + 1) + '). Ввод [тип = "текст"]') DatePicker ('setDate', thisDate);

эффективен для добавления 30 дней к выбранной дате и отображения этой даты в соответствующем поле ввода первой строки?

Любая помощь будет оценена по достоинству.

ответ

0
$('.datepicker').datepicker('disable'); 

где .datepicker является класс DatePicker.

+0

Хорошо, спасибо, он решил мою первую проблему. Но второй [(2)] все еще находится на рассмотрении. Выбранная дата + 30 дней не отображается в соответствующей ячейке первой строки. Я думаю, что мой селектор неверен. Пожалуйста, помогите и в этом вопросе. –

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – silwar

+0

@silwar 'как настроить readonly на datepicker'? – guradio

0

Чтобы добавить 30 дней к выбранной дате, вы можете попробовать следующий код.

$('table#mytable > tbody> tr > td > input[type="text"]').datepicker({ 
     onClose: function(selectedDate, inst) { 
     var d =new Date(selectedDate); 
     var day=d.getDate(); 
     var month=d.getMonth(); 
     var year=d.getFullYear(); 
     $(this).datepicker('setDate',new Date(year,month,day+30)); 
     } 
    }); 

Надежда Это поможет вам.

Смежные вопросы