我正在使用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"/>
JS档案:
$scope.submitform= function(isValid){
var inputAddr = $scope.address;
alert(inputAddr); //coming as undefined
...
现在,当我在jsp的输入框'address'中输入一个字母数字字符时,它会在JS中提醒我 undefined (可能是因为过滤了字母为非字母数字的模式)。如果我删除ng-pattern,它会传递submitForm传递'true',好像每个输入都是“按预期”。我想访问$ scope.address的原因是检查和值并显示“空”和“非字母数字”验证的不同错误消息。
感谢任何帮助!
答案 0 :(得分:6)
当模型无效时,该值不会分配给模型。如果要查看用户输入的内容,您需要检查$ viewValue:
您必须在输入中添加name属性,因此请将输入html更改为:
<input ng-model="address" type="text" name="address"
ng-pattern="/^[a-zA-Z0-9 ]*$/" required="true"/>
并将提交功能更改为
$scope.submitform = function(isValid) {
console.log($scope.addressForm.address.$viewValue);
}
答案 1 :(得分:1)
听起来你只需要知道验证错误是什么。
您可以检查$error
属性FormController
(在您的情况下为addressForm
)以查看已通过或失败的验证。
例如,如果输入为空,那么&#34; required&#34;验证将失败,addressForm.$error.required
将是Array
,其中包含未通过此验证的输入。
如果&#34;要求&#34;验证成功,然后addressForm.$error.required
将只是false
。
您可以非常轻松地在角度表达式中使用它:
<p ng-show="addressForm.$error.required">This field is required.</p>
或者您可以通过与视图关联的$scope
对象访问表单:
if ($scope.addressForm.$error.required) {
// required validation failed
}