需要在文本框中输入两个词,AngularJS
Require two words in textbox, with AngularJS
我真的很挣扎。我需要强制用户只在一个文本框中写名字和姓氏。
我使用 AngularJS,我想使用 ng-pattern 验证文本字段。该字段应接受所有字符,并且需要 2 个单词。
这是输入:
<input name="fistname_lastname" ng-model="fistname_lastname" ng-pattern='my_pattern' type="text">
我在控制器中有我的模式,像这样:
$scope.my_pattern = /^\s*\w*\s*$/;
还有其他更好的方法吗
是的,您可以通过 directive too 来完成,但只是为了验证文本是否包含两个字符 ng-pattern
会是更好的方法。
此处您的 html 将使用 (.*?[a-zA-Z]){2,}
这种模式。
HTML
<input type="text" ng-model="fistname_lastname" max-length="30"
ng-pattern="/^(.*?[a-zA-Z]){2,}$/" placeholder="add new todo here"/>
更新
如果您想停止提交表单,则无需担心。 Angular 内部为您管理。每当您针对任何表单字段提及 ng-pattern
时,angular 都会为该字段创建对象(字段应具有 name
和 ng-model
属性),该对象负责特定的有效性场地。由于 ng-pattern
regx 不满足,angular 将该字段设为 invalid
,意味着它附加 ng-invalid-pattern
& ng-invalid
class。结果表格也变得无效。现在,如果您可以查看表单对象,您会发现表单通过在 html.
上使用语法 form.$valid
获得 invalid
HTML
<form name="form" ng-submit="submit()">
<input type="text" ng-model="firstname_lastname" size="30" ng-pattern="/^(.*?[a-zA-Z]){2,}$/" placeholder="add new todo here"/>
<button type="submit">Submit</button>
</form>
控制器
$scope.submit = function(){
if($scope.form.$invalid) //here you can stop use from submitting for by checking validity
alert('Form is invalid'); //form is invalid
else
alert('Form is valid');//here you can do actual submit to server
}
希望对您有所帮助,谢谢。
谢谢你的帮助。但真正起作用的是这个正则表达式。
\b([A-Z]{1}[a-z]{1,30}[- ]{0,1}|[A-Z]{1}[- \']{1}[A-Z]{0,1}
[a-z]{1,30}[- ]{0,1}|[a-z]{1,2}[ -\']{1}[A-Z]{1}[a-z]{1,30}){2,5}
我真的很挣扎。我需要强制用户只在一个文本框中写名字和姓氏。 我使用 AngularJS,我想使用 ng-pattern 验证文本字段。该字段应接受所有字符,并且需要 2 个单词。 这是输入:
<input name="fistname_lastname" ng-model="fistname_lastname" ng-pattern='my_pattern' type="text">
我在控制器中有我的模式,像这样:
$scope.my_pattern = /^\s*\w*\s*$/;
还有其他更好的方法吗
是的,您可以通过 directive too 来完成,但只是为了验证文本是否包含两个字符 ng-pattern
会是更好的方法。
此处您的 html 将使用 (.*?[a-zA-Z]){2,}
这种模式。
HTML
<input type="text" ng-model="fistname_lastname" max-length="30"
ng-pattern="/^(.*?[a-zA-Z]){2,}$/" placeholder="add new todo here"/>
更新
如果您想停止提交表单,则无需担心。 Angular 内部为您管理。每当您针对任何表单字段提及 ng-pattern
时,angular 都会为该字段创建对象(字段应具有 name
和 ng-model
属性),该对象负责特定的有效性场地。由于 ng-pattern
regx 不满足,angular 将该字段设为 invalid
,意味着它附加 ng-invalid-pattern
& ng-invalid
class。结果表格也变得无效。现在,如果您可以查看表单对象,您会发现表单通过在 html.
form.$valid
获得 invalid
HTML
<form name="form" ng-submit="submit()">
<input type="text" ng-model="firstname_lastname" size="30" ng-pattern="/^(.*?[a-zA-Z]){2,}$/" placeholder="add new todo here"/>
<button type="submit">Submit</button>
</form>
控制器
$scope.submit = function(){
if($scope.form.$invalid) //here you can stop use from submitting for by checking validity
alert('Form is invalid'); //form is invalid
else
alert('Form is valid');//here you can do actual submit to server
}
希望对您有所帮助,谢谢。
谢谢你的帮助。但真正起作用的是这个正则表达式。
\b([A-Z]{1}[a-z]{1,30}[- ]{0,1}|[A-Z]{1}[- \']{1}[A-Z]{0,1}
[a-z]{1,30}[- ]{0,1}|[a-z]{1,2}[ -\']{1}[A-Z]{1}[a-z]{1,30}){2,5}