LoginSignup
19
19

More than 5 years have passed since last update.

AngularJSでほんの少しだけ複雑な必須入力にしてみる

Posted at

AngularJSのリファレンス本でサラっと
「ng-requiredは値の評価により動的に必須チェックの付け外しが可能」
とだけ書いてあるけど、それ以上の説明とサンプルが見当たらず、ググっても情報が少なかったので確かめてみました。

ラジオボタンの選択値によって必須かどうか動的に変更させる

例えば、こんな入力フォーム。

スクリーンショット-2015-02-19-0.00.12.png

上のラジオボタン「平日」が選択されている場合はテキストボックスは必須ではないけど、下のラジオボタンが選択された場合には、テキストボックスを必須入力にしたい。みたいな条件付き必須入力というケースはよくあるかと思います。
これはng-requiredを使うことで、HTMLのみで必須入力を動的に変更出来ます。

sample.html
<form name='myForm'>
  <div>
    <input type="radio" name="interval" value="w1" ng-model="hoge.interval">平日
  </div>
  <div>
    <input type="radio" name="interval" value="w2" ng-model="hoge.interval">
    <input type="text" name="days" 
           ng-model="hoge.interval_days"
           ng-required="hoge.interval==='w2'">日ごと
  </div>
</form>
<p ng-show="myForm.days.$error.required">何日ごとか入力してぽよ</p>

required と ng-required の違い

required:
必ず必須入力。

ng-required:
評価式を挿入できて、その結果(trueかfalseか)によって必須入力を変更する。
ng-required="true" とするとrequiredを記述したのと同じになる。

つまり、このような条件付き必須入力にしたい場合には、ng-requiredは有用なディレクティブです。

19
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
19