2009-09-07 75 views
3

我使用jQuery UI中的altfield和altformat选项向用户显示友好的日期,同时在隐藏字段中为数据库格式化日期。唯一的一点是,我不希望在输入框中显示给用户的日期(视觉上表明他们可以输入),我只是希望它显示为文本。我知道我可以设计一个输入框的样式,所以它看起来不像是一个,但我宁愿只使用div并更新文本。但是,它似乎只能用于输入字段,如果将其设置为div ID,则它什么也不做。jquery ui datepicker - altfield作为div而不是输入

有没有人克服过这个问题?

+0

我想建议,你只是禁用字段,但在jquery ui datepicker网站,停止脚本工作。也许你可以使用禁用的字段,并仍然捕捉点击事件,打开datepicker并更新其值? 破解其代码并添加使用禁用输入的功能:P – 2009-09-07 13:57:37

+0

感谢您的评论。我可以让它与禁用的输入字段一起工作,但是从可用性的角度来看 - 我不希望它成为输入字段,因为我不希望它给出用户可以输入内容的信号它,即使他们不能! – ianmcn 2009-09-07 14:51:58

+0

老兄,如果你是正确的,那么一般的计算机用户甚至不会理解它的输入字段。我使用我的gf进行傻瓜式测试,即使她有一些体面的计算机技能。所有这些测试都告诉我,如果看起来不像通常那样,那么它可能不是它。这意味着如果你的输入看起来不像输入,并且在编辑它时不能改变它的内容,那么它可能不是输入。用户只是接受他无法在那里做任何事情的事实。已禁用输入与内容区域相同的bg,替换边界或删除边界。你去了。 – 2009-09-07 17:49:33

回答

11

我已经得到了它在使用ONSELECT这一个div显示:

onSelect: function(dateText, inst) { 
//formatDate Requires a new date object to work 
     var myDate = new Date(dateText); 

//Set a new var with different format to use 
     var newFormat = $.datepicker.formatDate("DD, d MM, yy", myDate); 
//Choose the div you want to replace 
     $("#yourselctorhere").html(newFormat); 
    } 
    }); 
5

答案是使类型的输入=隐藏,然后选择相应的值,并将其分配到的文字你div

$("myPicker").datepicker({ 
altField: "#altInput", 

var hiddenDate = $("[name='altInput']").attr('value'); 
$("#myDate").text(hiddenDate);} 
}); 

<input id = "altInput" type = "hidden"/> 
<div id = "myDate"></div> 
0

使用CSS:P

.div,.div:focus{ 
    display:block; 
    background:#fff; 
    border:0px; 
    color:#333 
} 
<input type="text" class="div" readonly id="altInput" /> 
0

我发现最好的办法是在jquery.ui.datepicker-cc.js

第一搜索改变这种文件_updateAlternative功能并更改此行:

$(altField).each(function() { $(this).val(dateStr); }); 

例如,我已经改变了这个:

$(altField).each(function() { $(this).val(dateStr); $(this).text(dateStr); }); 

现在你可以把你想要的任何元素的替代文本。 我希望这会有所帮助。