色々と面倒だったけど頑張ったらなんとなったので。
要はテキスト入力フォームの値が変化してから一定時間変わらなかった時に、イベントを発生させたいわけです。
coffeescript
startVal = $("#input").val()
setTimeout ->
do (val = startVal) ->
if val == $("#input").val()
Config.log "test : #{val} #{$("#input").val()}"
else
Config.log "invalid : #{val} #{$("#input").val()}"
,1000
javascript
startVal = $("#input").val();
setTimeout(function() {
(function(val) {
if (val === $("#input").val()) {
Config.log("test"));
} else {
Config.log("invalid"));
}
})(startVal);
}, 1000);
メモ程度に自コードから抜き出して整形しただけなので、動くかは微妙。特にJSはcoffeeのコンパイルから抜き出して整形してる感じ。あくまでイメージ程度に。
使い所
ログインIDの利用可能バリデーションとか。APIめちゃクチャ投げられるの嫌いな人向け
(というか想定API応答時間分は間隔空けないと結果の戻りが順不同だから面倒だったり)
雑感
coffeeの即時関数の書き方が面倒だった。
引数が最初に来るので、
coffeescript
setTimeout ->
do (val = $("#input").val()) ->
if val == $("#input").val()
Config.log "test : #{val} #{$("#input").val()}"
else
Config.log "invalid : #{val} #{$("#input").val()}"
,1000
とか書いてても違和感なくて、コンパイル済みのコード見てようやく気づいた。