徒然なるままに、日ぐらしP/Cに向ひて――
メインメニュー
ブログカレンダー
2013年 3月
« 2月   4月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
WordPress カテゴリ一覧
WordPress 検索


富士カメラ5

Kestrel とは、チョウゲンボウのことです。ハトくらいの小さな猛禽類、つまりワシの仲間で、ハヤブサに似ています。
チョウゲンボウにはホバリングという特技があります。よく農地の上空で空中に停止している姿が見られます。小さいけれどカッコイイ、そして最近は都会でも繁殖している頼もしいタカです。
このサイトのURLは、そんなチョウゲンボウから名前を借りました。

2013年3月6日(水曜日)

ajaxで、フォーカスを失ったときに処理をさせる

カテゴリー: - flyman @ 21時23分53秒

さらに、test01プロジェクトを書き換える。

app/views/welcome/index.html.erb はそのまま使う。
<%= text_field_tag :field1, :id => “field1″ %><BR/>
<%= text_field_tag :field2, :id => “field2″ %><BR/>
<div id="hint”></div>

app/assets/javascripts/application.js の内容を書き換える。

$(document).ready(function(){
 $("#field1″).blur(function(){
  if($(this).val().length>0){
   $.ajax({
    url: ‘/welcome/ajaxSample’,
    type: ‘POST’,
    datatype: ’script’,
    timeout: 1000,
    data: $(this),
    error: function(){alert(’Server Error on ajax’)},
   });
  };
 });
});

“blur” は、フォーカスを失ったとき、つまり field1 からカーソルが外へ出たときに実行される。

app/controllers/welcome_controller.rb に、"ajaxSample"アクションを追加する。

class WelcomeController < ApplicationController
 略
 def ajaxSample
  @value = Time.now
 end
end

新たに、app/views/welcome/ajaxSample.js.erb を作る。内容は以前のindex.js.erbとほぼ一緒だ。
$('#hint').html("<%= @value %>")

最後に、app/config/routes.rb に、
match "welcome/ajaxSample"
を追加しておく。

「:id => “field1″」な text_field_tag からフォーカスが別のフィールドやボタンに移ると、application.jsの「url: ‘/welcome/ajaxSample’」で指定されたアクションが実行され、ajaxSample.js.erbテンプレートにより、「<div id="hint”></div>」の値が書き換えられる。

実行するアクション(例では welcome_controllerのajaxSample)にロジックを書けば、入力値のチェックができる。これこそflymanがやりたかった事なのだ。
例えば、取引先コードを入れたら、取引先マスタを検索して取引先名称を表示する、とか。処理に時間が掛かるときは、timeoutの値を大きくすると良い。
前回のmouseoverなど、他のファンクションと組み合わせても良いだろう。


TrackBacks

このコメントのRSS

TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/888

この投稿には、まだコメントが付いていません

コメント

_CM_NOTICE

20 queries. 0.016 sec.
Powered by WordPress Module based on WordPress ME & WordPress

ヘッドライン
テーマ選択

(4 テーマ)