knockout.jsで入力チェック
このあいだ作ってみたknockout.jsを使ったTodoアプリなんですが、全く入力チェックをかけてないので、空文字でTodoが作れてしまうという問題がありました。
knockout.jsで入力チェックってどうやるのが普通なんだろうか、と思ってググってみたところKnockout-Validationというのがあったのでこれを使って簡単に必須チェックだけかけてみました。
Knockout-Validation
https://github.com/ericmbarnard/Knockout-Validation
モデルにルールを設定します。必須チェックをかけました。
他にもいろいろあるようです。
https://github.com/ericmbarnard/Knockout-Validation/wiki/Native-Rules
function Todo(data){ - this.title = ko.observable(data.title); + this.title = ko.observable(data.title).extend({required: true}); this.finished = ko.observable(data.finished); this.resource_uri = data.resource_uri }
で、インスタンスにko.validatedObservableをかましてやればisValid()メソッドでルールを満たしているか判定してくれるようになりました。
var todo = ko.validatedObservable(new Todo({title: self.newTodoTitle()})); if(!todo.isValid()){ return }
ソースはこちら
django-kickstrap-todo
https://github.com/yuhei0718/django-kickstrap-todo
動くサンプルはこちら