<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
我想在用户前进之前检查输入值中是否有@符号。 我在这里的代码似乎无效。
我还能如何检查? 如果您可以简要解释为什么这行不通,那也很好!预先谢谢你
答案 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('@');