带有日期输入的jQuery Datepicker,不允许用户输入

时间:2020-03-06 14:55:52  来源:igfitidea点击:

如何将jQuery Datepicker与文本框输入配合使用:

$("#my_txtbox").datepicker({
  // options
});

不允许用户在文本框中输入随机文本。
我希望当文本框获得焦点或者用户单击它时弹出Datepicker,但我希望文本框忽略使用键盘的任何用户输入(复制和粘贴或者任何其他操作)。我想专门从Datepicker日历中填充文本框。

这可能吗?

jQuery 1.2.6
日期选择器1.5.2

解决方案

我们应该能够在文本输入上使用readonly属性,并且jQuery仍将能够编辑其内容。

<input type='text' id='foo' readonly='true'>

要使选择器弹出以获取焦点,请执行以下操作:

$(".selector").datepicker({ showOn: 'both' })

如果我们不希望用户输入,请将其添加到输入字段

<input type="text" name="date" readonly="readonly" />

尝试

$("#my_txtbox").keypress(function(event) {event.preventDefault();});

这种演示方式是通过将日历放在文本字段上来完成的,因此我们无法键入它。当然,我们也可以将输入字段设置为仅读取HTML。

<input type="text" readonly="true" />

我发现至少对我而言,jQuery Calendar插件通常在选择日期时效果更好。

如果要在多个地方重用日期选择器,那么也很容易通过JavaScript使用类似以下方法来修改文本框:

$("#my_txtbox").attr( 'readOnly' , 'true' );

在初始化日期选择器之后/之前。

<input type="text" readonly="true" />

使文本框在回发后丢失其值。

我们应该使用Brad8118的建议,该建议效果很好。

$("#my_txtbox").keypress(function(event) {event.preventDefault();});

编辑:
要使其适用于IE,请使用" keydown"而不是" keypress"