jQuery - 仅允许特定的电子邮件域注册

时间:2017-05-16 02:40:04

标签: javascript jquery html

我试图在名为usertype1usertype2的2种特定用户类型中制作注册表单。

  1. usertype1 - 允许所有电子邮件域
  2. usertype2 - 仅限特定的电子邮件域
  3. usertype2,域名列表中:

    • schoolA.com
    • schoolB.com
    • schoolC.com

    这是我的代码:

    
    
    (function() {
      $("#email").attr('placeholder', 'Please put your student email');
      $("#usertype").change(function() {
        if($("#usertype").val() == "usertype1") {
          $("#email").attr('placeholder', 'Please put your student email');
          email = $("#email").split('@').slice(1);
          var domains = ['schoolA.com', 'schoolB.com', 'schoolC.com'];
          if ($.inArray(email, domains) ! == 1) {
            $(':input[type="submit"]').prop('disabled', false);
          } else {
            $(':input[type="submit"]').prop('disabled', true);
          }
        } else {
          $("#email").attr('placeholder', 'Please put your student email');
        }
      });
    });
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <select name="school" id="usertype">
      <option value="usertype1">School A</option>
      <option value="usertype2">School B</option>
    </select>
    
    <input type="text" id="email" />
    <input type="submit" value="Submit" />
    &#13;
    &#13;
    &#13;

    我尝试了我的代码但由于缺少参数或某些东西而无法工作。 知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

代码段中有几个问题:

  • 函数包含在()但从未执行过,这就是“占位符没有出现”的原因 - 没有代码在运行。建议:在$()中包装函数,以便在加载页面后执行它。
  • $("#email")没有split()方法。我认为这应该是$("#email").val().split()
  • .slice(1)返回一个不正确的数组。这里应该是一个简单的[1]来获取电子邮件的域名。
  • 检查userType的内部函数仅在#userty选择器更改时运行。最好在页面初始化/ #userty选择器更改/ #email输入值更改时使其运行。
  • jQuery选择器被过度使用。最好使用选择器一次并将结果存储在变量中。效率更高。

解决这些问题后,最好去。这是一个有效的代码片段:

$(function() {
  var $email = $("#email");
  var $userType = $("#usertype");
  var $submitButton = $(':input[type="submit"]');

  $email.attr('placeholder', 'Please put your student email');
  $userType.change(checkUserType);
  $email.keyup(checkUserType);
  checkUserType();

  function checkUserType() {
      if($userType.val() == "usertype1") {
      $email.attr('placeholder', 'Please put your student email');
      var emailDomain = $email.val().split('@')[1];
      var domains = ['schoolA.com', 'schoolB.com', 'schoolC.com'];
      if ($.inArray(emailDomain, domains) < 0) {
        $submitButton.prop('disabled', true);
      } else {
        $submitButton.prop('disabled', false);
      }
    } else {
      $email.attr('placeholder', 'Please put your student email');
      $submitButton.prop('disabled', false);
    }
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="school" id="usertype">
  <option value="usertype1">School A</option>
  <option value="usertype2">School B</option>
</select>

<input type="text" id="email" />
<input type="submit" value="Submit" />

还提供jsfiddle作为参考。