Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript返回无效字符输入的错误消息_Javascript_Error Handling - Fatal编程技术网

JavaScript返回无效字符输入的错误消息

JavaScript返回无效字符输入的错误消息,javascript,error-handling,Javascript,Error Handling,我想要一个只接受字母字符的文本框,我相信这是通过我在每次字符输入后调用的当前函数完成的。但是,当用户试图输入非字母字符时,我还想返回一条错误消息。有人能解释一下这个问题的可能解决办法吗 /* 输入母亲的婚前姓: 使用此功能: function validateLetter() { var textInput = document.getElementById("maiden").value; var replacedInput = textInput.r

我想要一个只接受字母字符的文本框,我相信这是通过我在每次字符输入后调用的当前函数完成的。但是,当用户试图输入非字母字符时,我还想返回一条错误消息。有人能解释一下这个问题的可能解决办法吗

/* 输入母亲的婚前姓: 使用此功能:

    function validateLetter() {
        var textInput = document.getElementById("maiden").value;
        var replacedInput = textInput.replace(/[^A-Za-z]/g, "");
        if(textInput != replacedInput)
            alert("Error message");

        document.getElementById("maiden").value = replacedInput;
  }
function validateLetter() {
    var textInput = document.getElementById("maiden").value;
    if (!/^[a-zA-Z ]*$/.test(textInput)) {
        // Return error message.
    }
    textInput = textInput.replace(/[^A-Za-z]/g, "");
    document.getElementById("maiden").value = textInput;
}
并将输入元素更改为:

<input id="maiden" name="maiden" onkeyup="validateLetter();" />

变量textInput现在包含按键后的输入值。然后,该函数检查替换后的字符串是否与原始输入相同。

假设字母字符为[A-Za-z],您可以使用RegExp函数检查输入是否仅为字母字符

当从textInput的开始^到结尾$时,此正则表达式返回true,其中[a-zA-Z]集合中只包含字符,且为空字符串

如果要在集合中包含空白,请执行以下操作:

/^[a-zA-Z ]*$/.test(textInput)
应用于validateLetter函数:

    function validateLetter() {
        var textInput = document.getElementById("maiden").value;
        var replacedInput = textInput.replace(/[^A-Za-z]/g, "");
        if(textInput != replacedInput)
            alert("Error message");

        document.getElementById("maiden").value = replacedInput;
  }
function validateLetter() {
    var textInput = document.getElementById("maiden").value;
    if (!/^[a-zA-Z ]*$/.test(textInput)) {
        // Return error message.
    }
    textInput = textInput.replace(/[^A-Za-z]/g, "");
    document.getElementById("maiden").value = textInput;
}

这里有一个简单、天真的解决方案,至少对我们有用。它使用char-code值而不是regex,只允许用户键入shift、alt等控制字符,甚至只允许按alpha字符。如果按下无效字符,则显示错误消息

JS Fiddle链接:

工作示例和源代码如下:

变量utils={ validateLetter:函数事件{ var c0=48; var-cA=65; var-cZ=90; var feedback=document.getElementById'feedback'; var key=event.keyCode | | event.which; 如果key>cZ | | key=c0{ feedback.innerHTML=不允许使用该字符。 feedback.style.display=块; 返回false; }否则{ feedback.style.display=无; } } }; var txtMaiden=document.getElementById'maiden'; txtMaiden.onkeydown=utils.validateLetter; txtMaiden.focus; .错误{ 显示:无; 保证金:2倍; 填充:4px8px; 边框:1px纯红; 背景色:RGB255245245; 颜色:000; } 母亲的娘家姓:

确保关闭输入标签。