Javascript jQuery-仅允许特定电子邮件域注册
我正在尝试用两种特定的用户类型创建一个注册表,分别称为Javascript jQuery-仅允许特定电子邮件域注册,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试用两种特定的用户类型创建一个注册表,分别称为usertype1和usertype2 usertype1-允许所有电子邮件域 usertype2-仅限特定的电子邮件域 在usertype2中,域列表: schoolA.com 学校网站 schoolC.com 这是我的代码: (函数(){ $(“#email”).attr('占位符','请放入您的学生电子邮件'); $(“#用户类型”).change(函数(){ if($(“#usertype”).val()=“usertype1”
usertype1
和usertype2
usertype1
-允许所有电子邮件域usertype2
-仅限特定的电子邮件域usertype2
中,域列表:
- schoolA.com
- 学校网站
- schoolC.com
(函数(){
$(“#email”).attr('占位符','请放入您的学生电子邮件');
$(“#用户类型”).change(函数(){
if($(“#usertype”).val()=“usertype1”){
$(“#email”).attr('占位符','请放入您的学生电子邮件');
email=$(“#email”).split('@').slice(1);
var域=['schoolA.com'、'schoolB.com'、'schoolC.com'];
如果($.inArray(电子邮件、域)!==1){
$(':input[type=“submit”]).prop('disabled',false);
}否则{
$(':input[type=“submit”]).prop('disabled',true);
}
}否则{
$(“#email”).attr('占位符','请放入您的学生电子邮件');
}
});
});代码>
A学校
B学校
代码片段中有几个问题:
- 函数被包装在
()
中,但从未执行,这就是为什么“占位符没有出现”——没有代码正在运行。建议:在$()
中包装函数,以便在加载页面后执行该函数
$(“#电子邮件”)
没有像split()
那样的方法。我想这里应该是$(“#email”).val().split()
.slice(1)
返回一个数组,该数组不正确。这里应该是一个普通的[1]
来获取电子邮件的域名
- 检查用户类型的内部函数仅在
#userty
选择器更改时运行。当页面初始化/#用户属性
选择器更改/#电子邮件
输入值更改时,最好使其运行
- jQuery选择器使用过度。最好使用选择器一次并将结果存储在变量中。效率更高
在解决了这些问题之后,就可以开始了。以下是一段有效的代码片段:
$(函数(){
var$email=$(“#email”);
var$userType=$(“#userType”);
var$submitButton=$(':input[type=“submit”]);
$email.attr('占位符','请放置您的学生电子邮件');
$userType.change(checkUserType);
$email.keyup(checkUserType);
checkUserType();
函数checkUserType(){
如果($userType.val()=“usertype1”){
$email.attr('占位符','请放置您的学生电子邮件');
var emailDomain=$email.val().split('@')[1];
var域=['schoolA.com'、'schoolB.com'、'schoolC.com'];
如果($.inArray(emailDomain,域)<0){
$submitButton.prop('disabled',true);
}否则{
$submitButton.prop('disabled',false);
}
}否则{
$email.attr('占位符','请放置您的学生电子邮件');
$submitButton.prop('disabled',false);
}
}
});代码>
A学校
B学校
如果($.inArray(电子邮件,域)!==1)
有额外的空间,则您的代码行。如果($.inArray(电子邮件,域)!==1)
:)@obdimanage谢谢你,那么应该是。已经修好了,但还是不行。JS控制台说:未捕获的语法错误:意外令牌!:(对不起,我是个白痴。用$替换它。inArray(电子邮件,域)=-1
。应该可以;)完成,占位符没有出现。我试图更改2个选定选项的值,但占位符和提交按钮不起作用。我要重写事件处理程序吗?你是最棒的!给我一个完美的解释。非常感谢你!您所说的“jQuery选择器被过度使用了,最好使用一次选择器并将结果存储在变量中,这样效率更高”是什么意思?是关于嵌套的if-else吗?@rootnel不,不是关于嵌套的if-elst。我的意思是:$(…)
语句使用太多--此语句将搜索页面中的元素,这将消耗一些CPU资源。因此,如果有两个相同的$(…)
语句,那么相同的搜索将被发送两次,这是一种浪费。谢谢你的解释。:)