【Angular】文本框输入限制13个汉字,30个字母,可输入中文、字母、符号 ,不允许输入数字

最近用Angular在做一个项目,其中很简单的一个需求点就是要求客户姓名的文本框输入要求:

文本框输入限制13个汉字,30个字母,可输入中文、字母、符号 ,不允许输入数字

说起来挺简单的,但是做起来想了很久,网上也找了很多文章,都是很片面的,所以要靠自己来整合一下网络资源,

按自己的思路进行编写代码,最终达到了效果,可以分享给大家和我一起看看,也许很多大佬有更简便的方式,但是我的思路

可能受到了很大的限制,没有太深入的技术水平,所以就按自己的思路来写:首先看下文本框的代码:

<input type="text" class="form-control" placeholder="" ng-change="checkCustomerName()" ng-model="editForm.customerName" >

接下来看下controller里面的两个函数:

    $scope.checkCustomerName = function(){
        var vName = $scope.editForm.customerName;
        $scope.editForm.customerName = vName.replace(/[\d]+/g,""); // 限制数字输入
        vName  =  $scope.editForm.customerName;

        var chineseReg = /^[\u0391-\uFFE5]+$/;
        var letterReg = /^[a-zA-Z]+$/;
        if(vName != ""){
            var vNameLen = vName.length;
            if(chineseReg.test(vName)){
                if(vNameLen > 13){
                    // 限制中文长度
                    $scope.editForm.customerName = vName.substr(0,13);
                }
            }else if(letterReg.test(vName)) {
                if (vNameLen > 30) {
                    // 限制字母长度
                    $scope.editForm.customerName = vName.substr(0, 30);
                }
            }else {
                vNameLen = $scope.getByteLen(vName);
                console.log(vNameLen);
                if(vNameLen > 30){
                    $scope.editForm.customerName = vName.substr(0, 30);
                }
            }
        }
    }

    $scope.getByteLen = function (val) {
        var len = 0;
        for (var i = 0; i < val.length; i++) {
            var a = val.charAt(i);
            if (a.match(/[^\x00-\xff]/ig) != null)
            {
                len += 2;
            }
            else
            {
                len += 1;
            }
        }
        return len;
    }

按此写法达到了效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燕郊炒家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值