1

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.min.js"></script>

<div ng-app>
    <form class="edit-segment edit-form" name="form">
        <input type="text" class="form-control" ng-model="dname" name="name" maxlength="100" ng-pattern="/[A-z0-9 ]+/" ng-required='true' />
        <output>{{form}}</output>
        <output>{{dname}}</output>
        <output>{{form.name.$valid}}</output>
    </form>
</div>

パターンは次のとおりです:
/[A-z0-9 ]+/

何らかの理由で、この角度が注入された html が期待どおりに動作していません。私が期待しているのは、ユーザーが単語、数字、スペース以外の文字を入力するとすぐに、入力が無効になるため、 $form.name.$valid が false になることです。

代わりに、入力に文字、数字、またはスペースが含まれている限り、入力は $valid になり、true になります。
そう:
lkajskdjf<.?{}
は有効です

.,.,..,{}{][].,
は無効です。

.,.,..,{}{][].,\
は有効です。

?>?./..,./9k
が有効です。

kjkljd lkjsdf 90
が有効です。

有効であるべき唯一のものは最後のものです...明らかに間違っているng-patternの私の理解は、入力された文字がng-patternの正規表現と一致する限り、入力が有効であるということです。

何が起きてる?
予期している動作が実際の動作ではないのはなぜですか?

4

1 に答える 1