需要在文本框中输入两个词,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"/>

Working Fiddle

更新

如果您想停止提交表单,则无需担心。 Angular 内部为您管理。每当您针对任何表单字段提及 ng-pattern 时,angular 都会为该字段创建对象(字段应具有 nameng-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
}

Updated Fiddle

希望对您有所帮助,谢谢。

谢谢你的帮助。但真正起作用的是这个正则表达式。

\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}