防止将输入的键附加到输入字段值

时间:2014-12-31 22:06:53

标签: javascript html javascript-events

我有一个表单和一个文本输入字段,用于显示日期。我希望能够通过.onkeypress捕获条目,以便“+”添加一天,“ - ”减去一天等等。

除了我输入的密钥(在“+”键下面的示例中)最终被附加到dDate字段之外,我已经完成了所有工作。

将moment.js添加到HTML标记的标记中 以下是在HTML标记

之后找到的
<form>
    <input type="text" id="dDate" size="25" value="11/22/2014"></textarea>
</form>

<script type="text/javascript">
document.getElementById("dDate").onkeypress=function(e) {
    var e=window.event || e
    var keyunicode=e.charCode || e.keyCode
    //Allow alphabetical keys, plus BACKSPACE and SPACE
    // return (keyunicode>=65 && keyunicode<=122 || keyunicode==8 || keyunicode==32)? true : false
    switch (keyunicode) {
        case 61:
            alert("Hit Plus Key: "+ keyunicode);
            break ;
        case 43:
            var cDate = document.getElementById("dDate");
            var d = moment(cDate.value);
            var duration = moment.duration({'days' : 1});
            d.add(duration);
            cNewDate = d.format('MM/DD/YYYY')
            cDate.value = cNewDate;
            break;
        case 187:
            alert("Hit Plus Key: "+ keyunicode);
            break;
        default:
            alert("Hit non-Plus Key" + keyunicode);
    }
}
</script>

以下是标准HTML标记

如果你点击 + 键,上面的结果是dDate字段增加到11/23/2014,但也有“+”,结果是:11/23/2014+

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在脚本末尾添加e.preventDefault()将解决您的问题。

document.getElementById("dDate").onkeypress = function(e) {
    // ...
    e.preventDefault();
}

MDN Documentation

此外,<input>是自动关闭的,因此需要删除</textarea>