如何检查输入字段值是否包含字符?

时间:2018-08-09 02:57:47

标签: javascript if-statement

<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="myApp" ng-controller="MainController as vm">
    <div>
      <select-field ng-model="vm.myColor"
                    choices="vm.colors">
      </select-field>
    </div>
    <div>
      <select ng-model="vm.myColor" 
              ng-options="color for color in vm.colors">
      </select>
      Selected: {{vm.myColor}}
    </div>
</body>

我有一个表单,其输入的ID为issueContactEmail

我想在用户前进之前检查输入值中是否有@符号。 我在这里的代码似乎无效。

我还能如何检查? 如果您可以简要解释为什么这行不通,那也很好!预先谢谢你

2 个答案:

答案 0 :(得分:2)

为什么此代码对您不起作用,有几种可能。首先是您的javascript在文档完全加载之前就已运行(即,当您的javascript尝试访问它时,DOM中不存在#issueContactEmail)。 考虑将JavaScript尽可能移至<body>标记的末尾,以消除该问题。

另一种可能性是您正在运行此代码的浏览器不提供/不支持您尝试使用的.includes()方法(在某些较旧的浏览器中就是这种情况)

也许您可以尝试下面的代码,该代码还进行了一些附加的安全检查,以避免出现以后的问题:

var email = document.querySelector('#issueContactEmail');
var valid = false;

if(email) { // Check if input#issueContactEmail field exists
  if(email.value && email.value.contains('@')) { // Check if field value
                                                 // exists and contains '@'

    valid = true; // Then the field value is considered valid
  }
}

return valid; // Return if the field value was considered valid

Here's a jsFiddle as well-希望对您有帮助!

答案 1 :(得分:1)

尝试这个

//Takes the value form the input field
var email = document.querySelector('#issueContactEmail');
//returns weather this is a valid input value(contains @ sysmble)
return email.value && email.value.contains('@');