$ scope.var在angularjs中给出undefined

use*_*592 1 angularjs ng-pattern

我正在使用angularjs在文本框上进行客户端验证,我只需要输入字母数字字符.如果文本框保留为空或输入了非字母数字字符,则submitform会向JS发送'false',这是所需的,但问题是它不会传递非字母数字字符本身(在范围内).

JSP文件:

    <form name="addressForm" method="post" 
ng-submit="submitform(addressForm.$valid)" novalidate>
    ..
    <input ng-model="address" type="text" 
**ng-pattern**="/^[a-zA-Z0-9 ]*$/" required="true"/>
Run Code Online (Sandbox Code Playgroud)

JS档案:

$scope.submitform= function(isValid){
var inputAddr = $scope.address;
alert(inputAddr);  //coming as undefined
...
Run Code Online (Sandbox Code Playgroud)

现在,当我在jsp的输入框'address'中输入一个字母数字字符时,它给出了我在JS中警告它的未定义(可能是因为过滤char是非字母数字的模式).如果我删除ng-pattern,它会传递submitForm传递'true',就好像每个输入都是"按预期"一样.我想访问$ scope.address的原因是检查和值并显示"空"和"非字母数字"验证的不同错误消息.

任何帮助表示赞赏!

Ale*_*ADE 6

当模型无效时,该值不会分配给模型.如果要查看用户键入的内容,则需要检查$ viewValue:

您必须将name属性添加到输入,因此将输入html更改为:

<input ng-model="address" type="text" name="address"
ng-pattern="/^[a-zA-Z0-9 ]*$/" required="true"/>
Run Code Online (Sandbox Code Playgroud)

并将您的提交功能更改为

$scope.submitform = function(isValid) {
    console.log($scope.addressForm.address.$viewValue);  
}
Run Code Online (Sandbox Code Playgroud)