AngularJSでbuttonのdisabledをng-modelで連動させる

フォームのtextareaとbuttonをバインドしボタンを無効化する

ng-disabledディレクティブでbool値に応じたbuttonの制御が可能

フォームを送信した後にボタンを無効化する。正確にはtextareaが空の場合にはbuttonにdisabled属性を付加する。

textareaに文字を入力すると、buttonのdisabledが解除されるようにしてみる。

textareaとbuttonを連動させるために、textareaにng-modelを設定する。

<textarea id="right-label" placeholder="文章を入力" ng-model="Body"></textarea>

ng-modelにBodyという値を設定した。この値をbutton側でng-disabledの値として設定する。

<button class="right inline" ng-click="addAnswer(Body)" ng-disabled="!Body" type="submit">回答する</button>

ng-disabledはbool値に応じて、buttonにdisabled属性を追加/削除する。

上のコードの場合は、Bodyが空でない場合(textareaに文字が入力された場合)にdisabled属性が外れるようにしてある。そのため、アプリを起動したタイミングでは、disabled属性が追加されているようにbuttonを設定するコードになる。

動作確認

formに上で載せたtextareaタグとbuttonタグを書いて、chromeのjsインスペクタを開いた状態が下の画像になる。

ng-disabled-angular

オレンジで線を引いた部分で確認できるように、初期状態でbuttonにdisabled属性が追加されている。そして、textareaに文字を入力すると、ng-model経由でBodyのデータが追加されていく。

button側では、ng-disabledでBodyを設定しているため、textareaの動きに応じて、disabled属性をオンオフすることができるようになる。textareaに文章を入力することで、無効化されていたボタンを押すことが出来るようになる。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

AngularJSでbuttonのdisabledをng-modelで連動させるの記事にコメントを投稿