【问题标题】:javascript validation not working for only alphabetic valuesjavascript验证不适用于仅字母值
【发布时间】:2015-12-24 16:50:34
【问题描述】:

我使用了一个 javascript 验证函数来验证它。我用它来查看输入到 html 文本框的文本是否是字母(不允许使用数字字符)。该函数在 onkeyup 和 onblur 期间调用。唯一的问题是即使在验证中输入数值或特殊字符也不起作用。如果我将该字段留空,则它可以工作(显示该字段留空)。这是我的 JavaScript 代码:

function isAlphabetic(x,y){
    var exp = /^[a-zA-Z]+$/; 
    var a = document.getElementById(y).value;
    if(a=="" || a== null){
            document.getElementById(x).innerHTML = "You cannot leave this feild empty"; 
                return;
    }
    else if(a!="" && a!= null){
        if(y.match(exp)){
            document.getElementById(x).innerHTML = "";
            return;
        }
        else{
            document.getElementById(x).innerHTML = "Only enter alphabetic characters allowed";
            return;
        }

    }
    else{
        return;
    }

【问题讨论】:

  • y的值是多少?

标签: javascript regex validation


【解决方案1】:

您不再需要 JavaScript。在输入字段上使用pattern attribute,浏览器不会让用户输入任何不匹配的内容,并使用required 防止提交空值的表单。

另外,你真的只想要 ASCII 字母吗? (是否允许空格?非 ASCII 字母如“é”呢?)

【讨论】:

  • pattern属性是否兼容旧浏览器?是的,只有包含空格的 ASCII 值
  • 不,它是现代 HTML,因此无法在旧版浏览器中运行 (caniuse.com/#feat=input-pattern)。除非您在过时的公司环境中工作,否则这不是问题。
【解决方案2】:

如果你使用y 作为元素的id,我想你不应该用你的正则表达式检查它。相反,您应该检查a

if(a.match(exp)) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多