从Javascript代码中删除限制

时间:2018-01-19 11:28:41

标签: javascript

我从网上找到了这段代码,我试图删除名称必须只是字母和最小3和最大20限制。输入的名称可以小于3并包含数字。我的JavaScript水平很低,我非常感谢有人帮助我。

(function($){
$.fn.checkAvailability = function(opts) {
    opts = $.extend({
        target: '#response',
        trigger: '#btnCheck',
        ajaxSource: 'test.asp',
        fireOnKeypress: true
    }, opts || {});

    var $this = $(this);

    if (opts.fireOnKeypress) {
        $this.keyup(function() {
            checkUsername();
        });

        $this.keypress(function(event) {
            if (event.keyCode == 13) {
                event.preventDefault();
                return false;
            }
        });
    };

    $(opts.trigger).click(function() {
        checkUsername();
    });

    function checkUsername() {
        if (validateUsername()) {
            $(opts.target).html('<img src="loading.gif"> checking availability...');
            usernameLookup(); 
        }
        else
        {
            $(opts.target).html('Name must be letters only and min 3 and max 20');
        }   
    };

    function usernameLookup() { 
        var val = $this.val();
        $.ajax({ 
                url: opts.ajaxSource, 
                data: {fn:val,s:Math.random()},
                success: function(html){
                    $(opts.target).html(html);
                },
                error:function (){
                    $(opts.target).html('Sorry, but there was an error loading the document.');
                }
        }); 
    };

    function validateUsername(str) {
        return (/^[A-Za-z]{3,20}$/.test($this.val()));
    };
};
})(jQuery);

5 个答案:

答案 0 :(得分:1)

将函数validateUsername修改为:

function validateUsername(str) {
    return (/^[A-Za-z0-9]{1,20}$/.test($this.val()));
};

这将允许名称中的数字和1到20之间的长度。 您可以在此处检查正则表达式的允许值:https://regex101.com/r/8yoBGs/1/

我建议不要完全删除验证。

答案 1 :(得分:1)

validateUsername()的当前实现使用此正则表达式来验证用户:

/^[A-Za-z]{3,20}$/

[A-Za-z]是限制&#34;仅限字母&#34;;

在限制之后

{3,20}&#34;长度为3到20&#34;。如果它连续重复3到20个字符,它只是说匹配它前面的模式。

^$分别标记字符串的开头和结尾。这些是验证用户名的良好限制,因为它使正则表达式匹配整个字符串,而不仅仅是中间某处的一部分。

如果您想允许使用字母和数字,可以将[A-Za-z]替换为\w(这只是[A-Za-z0-9]的简写)。

要更改长度限制,只需更改{3,20}中的数字。

&#34;允许带有字母,数字且不再是20个字符的用户名如下所示:

/^\w{,20}$/

这也会匹配空字符串,所以我建议使用{1,20}

答案 2 :(得分:0)

如果您根本不想要任何用户名验证,请删除所有checkUsername()validateUsername()个引用:

(function($){
$.fn.checkAvailability = function(opts) {
    opts = $.extend({
        target: '#response',
        trigger: '#btnCheck',
        ajaxSource: 'test.asp',
        fireOnKeypress: true
    }, opts || {});

    var $this = $(this);

    function usernameLookup() { 
        var val = $this.val();
        $.ajax({ 
                url: opts.ajaxSource, 
                data: {fn:val,s:Math.random()},
                success: function(html){
                    $(opts.target).html(html);
                },
                error:function (){
                    $(opts.target).html('Sorry, but there was an error loading the document.');
                }
        }); 
    };

};
})(jQuery);

答案 3 :(得分:0)

function validateUsername(str) {
        return (/^[A-Za-z0-9]{1,20}$/.test($this.val()));
    };

现在它可以接受所有允许长度为1+的用户名的数字

答案 4 :(得分:0)

通常,名称允许字符和数字,所以我保持验证,但允许数字,如果必须,最少有一个字符允许,否则你也可以从代码中删除它。

function checkUsername() {
    if (validateUsername()) {
        $(opts.target).html('<img src="loading.gif"> checking availability...');
    }
    else
    {
        $(opts.target).html('Name must be letters or number only');
    }   
};

 function validateUsername(str) {
    return (/^[A-Za-z0-9]{1,20}$/.test($this.val()));
 };

否则,如果您不想进行任何验证,那么

function checkUsername() {
    if (validateUsername()) {
        // Do whatever your want to do.
    } 
};

 function validateUsername(str) {
    return true;
 };