这是我的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");
});
感谢高级版。马可。
答案 0 :(得分:1)
如果我理解正确的话,如果输入是非常简单的,那么返回false会有一个简单的修复:
$('.datapick' ).datepicker({
dateFormat: "dd/mm/yy",
beforeShow: function (input, inst) {
if ($(input).prop("readonly")) {
return false;
}
}});
答案 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);
});