求教大家一个js判断身份证的问题

qingwadaxia_1 2017-08-16 05:03:38
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
请输入身份证:<input type="text" id="cc" onblur="zz()">

<script>
var cc = document.getElementById("cc");
var aa = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;

cc.focus();

function zz(){
if (!aa.test(cc.value))
{
alert("请输入正确身份证");
return false;
cc.focus();

}
else{
alert("输入正确");
}
};


</script>
</body>
</html>

上面是我写的一个判断身份证的 里面有两个问题 想问下大家

1,我不想在input里加onblur="zz()",请问如何直接在js里写

2,当你没有输入正确身份证的时候, 点空白的地方 会一直提示请输入正确的身份证,我想问下 如何只弹出一次提示,我在下面加了return false; 虽然可以只弹出一次, 但是聚焦输入框的效果也消失了,如何能只弹出一次 并且聚焦效果也继续保留。
...全文
296 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingwadaxia_1 2017-08-18
  • 打赏
  • 举报
回复
多谢大家 5楼大神已经帮我解决了
  • 打赏
  • 举报
回复

请输入身份证:<input type="text" id="cc">

<script>
    var cc = document.getElementById("cc");
    var aa = /(^\d{15}$)|(^\d{17}(\d|x)$)/i;
    cc.onblur = zz;
    cc.focus();
    function zz() {
        if (!aa.test(cc.value)) {
            if (!cc.getAttribute('note')) {
                alert("请输入正确身份证");
                cc.setAttribute('note', '1');//标记下已经执行过
            }
            setTimeout(function () { cc.focus(); }, 10);//延时,要不firefox无法获取焦点
        }
        else {
            alert("输入正确");
        }
    }
</script>


推荐学习资料
easyui datagrid fitColumns:true失效解决办法
jQuery dataType指定为json注意事项
qingwadaxia_1 2017-08-17
  • 打赏
  • 举报
回复
引用 3 楼 qingwadaxia_1 的回复:
[quote=引用 2 楼 m0_38082783 的回复:] 我回答一下第二个问题吧,第一个楼上的解决了,将cc.focus();放到return false;的前边,因为你return过后,就退出了,后边的聚焦代码就不会执行了。

if (!aa.test(cc.value))
{
alert("请输入正确身份证");  
cc.focus(); 
return false;
}
不行噢 return false 放后面 我试过了 还是点击空白的时候 会不停的弹出[/quote]我说的是 每次点击空白都会弹出 我想只弹出一次提示 然后就算输入的是错的 或者为空 点击空白的时候也不会再弹出提示了
qingwadaxia_1 2017-08-17
  • 打赏
  • 举报
回复
引用 2 楼 m0_38082783 的回复:
我回答一下第二个问题吧,第一个楼上的解决了,将cc.focus();放到return false;的前边,因为你return过后,就退出了,后边的聚焦代码就不会执行了。

if (!aa.test(cc.value))
{
alert("请输入正确身份证");  
cc.focus(); 
return false;
}
不行噢 return false 放后面 我试过了 还是点击空白的时候 会不停的弹出
Rattenking 2017-08-17
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:

请输入身份证:<input type="text" id="cc">

<script>
    var cc = document.getElementById("cc");
    var aa = /(^\d{15}$)|(^\d{17}(\d|x)$)/i;
    cc.onblur = zz;
    cc.focus();
    function zz() {
        if (!aa.test(cc.value)) {
            if (!cc.getAttribute('note')) {
                alert("请输入正确身份证");
                cc.setAttribute('note', '1');//标记下已经执行过
            }
            setTimeout(function () { cc.focus(); }, 10);//延时,要不firefox无法获取焦点
        }
        else {
            alert("输入正确");
        }
    }
</script>
推荐学习资料 easyui datagrid fitColumns:true失效解决办法 jQuery dataType指定为json注意事项
firefox为什么要延时才能获取焦点?没有遇到过,一般都是用的谷歌。浏览器本身的问题?
Rattenking 2017-08-16
  • 打赏
  • 举报
回复
我回答一下第二个问题吧,第一个楼上的解决了,将cc.focus();放到return false;的前边,因为你return过后,就退出了,后边的聚焦代码就不会执行了。

if (!aa.test(cc.value))
{
alert("请输入正确身份证");  
cc.focus(); 
return false;
}
hongmei85 2017-08-16
  • 打赏
  • 举报
回复

<meta charset="utf-8">
<title></title>
</head>
<body>
请输入身份证:<input type="text" id="cc">

<script>
var cc = document.getElementById("cc");
cc.onblur = zz;
var aa = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; 

cc.focus();

function zz(){
if (!aa.test(cc.value))
{
alert("请输入正确身份证");	
return false;
cc.focus();

}
else{
alert("输入正确");
}
};


</script>
</body>
</html> 

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧