javascript - AngularJS - 只有字母,没有空格验证
问题描述
我想用字母验证用户名并且不会输入空格...在这种情况下我使用 ng-patterns 作为 ng-pattern='/^[a-zA-Z\d-_]+$/' ..但是 ng-pattern 不起作用。我是 angular js 的新手 ..任何 angular js 都可以提供帮助。必须要求 Usename 并且只接受 leetes 没有数字和空格
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<head>
<style type="text/css">
.container {
width: 970px;
padding-top: 10px;
margin: 0 auto;
}
.pure-form input.ng-dirty.ng-invalid {
border-color: #e9322d;
}
.field-message {
display: inline-block;
color: #e9322d;
font-size: 90%;
margin-left: 0.5em;
}
[ng\:cloak],
[ng-cloak],
[data-ng-cloak],
[x-ng-cloak],
.ng-cloak,
.x-ng-cloak {
display: none !important;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-messages.min.js"></script>
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/pure-min.css"></link>
</head>
<body>
<div class="container" id="demoApp">
<form class="pure-form pure-form-aligned" name="frm" method="post" novalidate autocomplete="off">
<fieldset>
<div class="pure-control-group">
<label>Username</label>
<input name="username" ng-model="user.username" value="Debasish" type="text" placeholder="Username" required ng-pattern='/^[a-zA-Z\d\-\_]+$/' >
<div class="field-message" ng-messages="frm.username.$error" ng-if='frm.username.$dirty' ng-cloak>
<div ng-message="required">Username is required</div>
<div ng-pattern="required">Letters Only and No whitespace</div>
</div>
</div>
<div class="pure-control-group">
<label>Password</label>
<input name="password" ng-model="user.password" type="password" placeholder="Password" required ng-minlength="6" ng-maxlength="10">
<div class="field-message" ng-messages="frm.password.$error" ng-if='frm.password.$dirty' ng-cloak>
<div ng-message="required">Password is required</div>
<div ng-message="minlength">Password must have minimum 6 characters</div>
<div ng-message="maxlength">Password must have maximum 10 characters</div>
</div>
</div>
<div class="pure-control-group">
<label>Email Address</label>
<input name="email" ng-model="user.email" type="email" placeholder="Email Address" required>
<div class="field-message" ng-messages="frm.email.$error" ng-if='frm.email.$dirty' ng-cloak>
<div ng-message="required">Email is required</div>
<div ng-message="email">Must be a valid email</div>
</div>
</div>
<div class="pure-controls">
<label class="pure-checkbox">
<input name="conditions" ng-model="conditions" type="checkbox">
I've read the terms and conditions
</label>
<button type="submit" class="pure-button pure-button-primary" ng-disabled="frm.$invalid || !conditions">Submit</button>
</div>
</fieldset>
</form>
</div>
<script type="text/javascript">
angular.module('DemoApp', ['ngMessages']);
angular.bootstrap(document.getElementById('demoApp'), ['DemoApp']);
</script>
</body>
</html>
解决方案
要在用户输入与模式不匹配时显示错误,您必须使用ng-message
属性。
设置ng-message="pattern"
而不是ng-pattern="required"
在带有消息的 html 元素上。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<head>
<style type="text/css">
.container {
width: 970px;
padding-top: 10px;
margin: 0 auto;
}
.pure-form input.ng-dirty.ng-invalid {
border-color: #e9322d;
}
.field-message {
display: inline-block;
color: #e9322d;
font-size: 90%;
margin-left: 0.5em;
}
[ng\:cloak],
[ng-cloak],
[data-ng-cloak],
[x-ng-cloak],
.ng-cloak,
.x-ng-cloak {
display: none !important;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-messages.min.js"></script>
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/pure-min.css"></link>
</head>
<body>
<div class="container" id="demoApp">
<form class="pure-form pure-form-aligned" name="frm" method="post" novalidate autocomplete="off">
<fieldset>
<div class="pure-control-group">
<label>Username</label>
<input name="username" ng-model="user.username" type="text" placeholder="Username" required ng-pattern='/^[a-zA-Z\d\-\_]+$/' >
<div class="field-message" ng-messages="frm.username.$error" ng-if='frm.username.$dirty' ng-cloak>
<div ng-message="required">Username is required</div>
<div ng-message="pattern">Letters Only and No whitespace</div>
</div>
</div>
<div class="pure-control-group">
<label>Password</label>
<input name="password" ng-model="user.password" type="password" placeholder="Password" required ng-minlength="6" ng-maxlength="10">
<div class="field-message" ng-messages="frm.password.$error" ng-if='frm.password.$dirty' ng-cloak>
<div ng-message="required">Password is required</div>
<div ng-message="minlength">Password must have minimum 6 characters</div>
<div ng-message="maxlength">Password must have maximum 10 characters</div>
</div>
</div>
<div class="pure-control-group">
<label>Email Address</label>
<input name="email" ng-model="user.email" type="email" placeholder="Email Address" required>
<div class="field-message" ng-messages="frm.email.$error" ng-if='frm.email.$dirty' ng-cloak>
<div ng-message="required">Email is required</div>
<div ng-message="email">Must be a valid email</div>
</div>
</div>
<div class="pure-controls">
<label class="pure-checkbox">
<input name="conditions" ng-model="conditions" type="checkbox">
I've read the terms and conditions
</label>
<button type="submit" class="pure-button pure-button-primary" ng-disabled="frm.$invalid || !conditions">Submit</button>
</div>
</fieldset>
</form>
</div>
<script type="text/javascript">
angular.module('DemoApp', ['ngMessages']);
angular.bootstrap(document.getElementById('demoApp'), ['DemoApp']);
</script>
</body>
</html>
推荐阅读
- javascript - 在 JS 中过滤二维数组
- oracle - 从 oracle 转换为 db2
- matlab - 生成网格并细化三角形网格
- jquery - 点击后Jquery toggleClass img url不起作用
- python - Python 的 input() 不会自动识别 GNU readline
- regex-group - 多个组不匹配的正则表达式
- python - Adding items to a QComboBox adds blank items
- python - 从 pdf 报告中提取财务报表
- flutter - 扑。ShaderMask 无法从本地容器中获取对齐
- php - 我想将 html 苍蝇与 php 文件连接起来