我从网上找到了这段代码,我试图删除名称必须只是字母和最小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);
答案 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;
};