HTML 5输入类型='日期'禁用键盘输入

时间:2015-04-18 09:52:07

标签: html5 google-chrome

我正在使用Chrome打包应用,因此我的代码只能在Chrome中使用。

我有以下输入

<input type="date" />

https://jsfiddle.net/jhbo4q2k/

在Chrome上,这会自动添加DatePicker。我想只保留这个Datepicker并通过键盘禁用输入。

这可能吗?

编辑:

接受的答案有效。只是要小心这个

https://developer.chrome.com/extensions/tut_migration_to_manifest_v2#inline_scripts

您无法在打包的应用中使用内联脚本。

5 个答案:

答案 0 :(得分:40)

您可以使用onkeydown并阻止用户输入值。

<input type="date" onkeydown="return false" />

答案 1 :(得分:1)

嗨,您可以使用onfocus =“ blur()”防止键盘弹出。由于当元素具有焦点时,我们将把焦点移出该元素(不会显示本机键盘),但是通过onclick,我们可以继续进行操作。

 <input type="date" class="form-control"  onfocus="blur()" onclick="dosomework()" name="some-name" id="some-id" >
<script>

function dosomework(){
 alert('hi');
 }

<script>

答案 2 :(得分:1)

对于ReactJS,以上解决方案均无效

我必须做:

<input type="date" onKeyDown={(e) => e.preventDefault()} .... />

答案 3 :(得分:1)

启用和禁用输入日期的简便方法:

第 1 步:创建输入日期。

<input type="date" id="dateEnd">

第 2 步:创建启用和禁用按钮

<button onclick="disableBtn()">Disable Date Field</button>
<button onclick="undisableBtn()">Undisable Date Field</button>

第 3 步:用于启用和禁用的 Javascript

<script>
function disableBtn() {
  document.getElementById("dateEnd").disabled = true;
}

function undisableBtn() {
  document.getElementById("dateEnd").disabled = false;
}
</script>

希望可以帮到你。

答案 4 :(得分:0)

如果使用django表单;

datetime = forms.DateTimeField(widget=forms.DateTimeInput(attrs={
            'onkeydown': 'return false' # If you want to disable the keyboard
            "onfocus": 'blur()' # If you also want to disable virtual keyboard(on smartphones).
        }))

document.getElementById('id_datetime').onkeydown = (e) => {
    e.preventDefault();
}
document.getElementById('id_datetime').setAttribute('onfocus', 'blur()');

Django 只需在输入字段名称前添加 'id' 并将其设置为它的 id。此处输入字段名称为 datetime,因此 id 将为 id_datetime