2014-12-03 2 views
2

У меня есть два поля ввода для datepicker - один из них активен и второй как readonly, но похоже, что readonly не работает с datepicker. Код ниже.Поле ввода даты ввода jQuery установлено в «не clickable»

HTML:

<fieldset> 
     <label for="dataStart">Start Date</label> 
     <input type="text" style="width: 88px;" class="datepicker" id="dataStart" size="10" name="dataStart" /> 
    </fieldset> 
    <fieldset> 
     <label for="dataEnd">End Date</label> 
     <input type="text" style="width: 88px;" class="end_date" id="dataEnd" size="10" name="dataEnd" value="" readonly /> 
    </fieldset> 
<div>Days counted between dates: <span id="calculated"></span></div> 

JQuery:

$(document).ready(function() { 
    $("#dataStart").datepicker({ 
     minDate: '+1d', 
     changeMonth: true, 
     changeYear: true, 
     dateFormat: 'mm/dd/yy', 
     onSelect: function(date){ 
      var dates = date.split('/'); 
      var lastDate = new Date(dates[2], dates[0], 0); 
      var y = lastDate.getFullYear(), m = lastDate.getMonth(), d = lastDate.getDate(); 
      m = ('0'+ (m+1)).slice(-2); 

      $('#dataEnd').val(m+'/'+d+'/'+y); 

      var start = $('#dataStart').datepicker('getDate'); 
      $('#dataEnd').datepicker({dateFormat: 'mm/dd/yy'}).datepicker('setDate', m+'/'+d+'/'+y); 
      var end = $('#dataEnd').datepicker('getDate'); 
      var days = ((end - start)/1000/60/60/24)+1; 

      $('#calculated').text(days);   
     } 
    }); 
}); 

и JSFiddle

+0

Что это такое, что вы пытаетесь сделать? Вам нужен второй ввод, чтобы иметь дампикера, или вам просто нужно, чтобы он был заполнен значением, основанным на том, что выбрано в первом datepicker? – j08691

+0

Вход только для чтения не может быть изменен! то, что вы хотите, является отключенным атрибутом. Однако, если вы хотите продолжать читать только, вы должны установить readonly в false в своем javascript, прежде чем пытаться изменить значение. Это значение в вашем коде: '$ ('# dataEnd'). RemoveAttr ('readonly'); ... set value ... then reset to readonly ... '$ ('# dataEnd'). attr ('readonly', 'readonly');' – scraaappy

+0

@ j08691 второе поле ввода - это отображение даты на основе первый datepicker, но мне нужно передать эту дату на следующий шаг в любом случае. – JackTheKnife

ответ

2

Если вы не нуждаетесь в DatePicker на втором входе, то вы можете просто не создать его экземпляр, как вы в настоящее время используется, и используйте это вместо:

Удалить:

$('#dataEnd').datepicker({dateFormat: 'mm/dd/yy'}).datepicker('setDate', m+'/'+d+'/'+y); 

и изменения:

var end = $('#dataEnd').datepicker('getDate'); 

к:

var end = new Date($('#dataEnd').val()); 

jsFiddle example

+0

Bingo! Я не знал, что 'Date' можно установить без datepicker. Спасибо – JackTheKnife

+1

Yup, Date - это родной объект JS. – j08691

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