删除输入属性后,Jquery日期选择器不起作用

时间:2014-07-07 08:49:54

标签: jquery jquery-ui date datepicker twitter-bootstrap-3

这是我的Jsfiddle code,我有一个带日期选择器的输入文字;当这个输入只读时,我没有显示弹出日历。我点击按钮删除readonly attribut,但弹出日历不再显示。怎么了?

HTML:

<input type="text" name="data_contratto" id="data_contratto" class="form-control                         datamask datamask datapick" value="01/06/2013" readonly>
<button class="btneditlog btn btn-default" type="button" data-edit="daticontratto"><span class="fa fa-edit"></span></button>

JS:

$('.datapick' ).datepicker({ 
        dateFormat: "dd/mm/yy",
        beforeShow: function (input, inst) {
         if ($(input).prop("readonly")) {
                 inst.dpDiv = $('<div style="display: none;"></div>');
              }    
        }});

$('.btneditlog').click(function(e){
   $('#data_contratto').removeAttr("readonly"); 
    });

感谢高级版。马可。

3 个答案:

答案 0 :(得分:1)

如果我理解正确的话,如果输入是非常简单的,那么返回false会有一个简单的修复:

$('.datapick' ).datepicker({ 
    dateFormat: "dd/mm/yy",
    beforeShow: function (input, inst) {
     if ($(input).prop("readonly")) {
            return false;
          }    
}});

更新了小提琴http://jsfiddle.net/79jFB/1/

答案 1 :(得分:0)

问题在于

inst.dpDiv = $('<div style="display: none;"></div>');

隐藏了datepicker插件提供的<div>

解决这个问题的方法是,在点击按钮时重新初始化datepicker。

$('.btneditlog').click(function(e){
    $('#data_contratto').removeAttr("readonly");
    $('.datapick').datepicker('destroy').datepicker()
});

<强> Demo

答案 2 :(得分:0)

我认为问题可能是你要移除属性,但实际上没有重置属性,这就是你的beforeShow所看到的。在按钮上单击尝试:

$('.btneditlog').click(function(e){
    $('#data_contratto').prop("readonly", false); 
});