epgrecの検索フォームでキー入力による項目選択を可能に、種別選択で局の表示内容が変更されるようになります
修訂 | 2c92917040263aab70d8077592729ab2c0c7817f (tree) |
---|---|
時間 | 2012-03-10 16:41:04 |
作者 | trumphouse <trumphouse@user...> |
Commiter | trumphouse |
・Firefoxでブラウザのショートカットも実行されるバグ修正
・ループ、二重処理対応
@@ -9,8 +9,8 @@ | ||
9 | 9 | * shiftキーを押している場合は前の候補を選択 |
10 | 10 | * ●放送波選択で選択可能チャンネル変更 |
11 | 11 | * |
12 | - * Version 0.2.4 | |
13 | - * 10:37 2012/03/04 | |
12 | + * Version 0.2.5 | |
13 | + * 16:34 2012/03/10 | |
14 | 14 | * |
15 | 15 | * Author : osamu - atelier TRUMPHOUSE |
16 | 16 | * |
@@ -54,8 +54,8 @@ ER_sub.FRM ={ | ||
54 | 54 | }, |
55 | 55 | selectAssist : function(tg, attr){ |
56 | 56 | if (!tg) { tg = 'select';} |
57 | - attr = attr || 'html'; | |
58 | - switch (attr.toLowerCase()) { | |
57 | + attr = attr?attr.toLowerCase():'html'; | |
58 | + switch (attr) { | |
59 | 59 | case 'value': |
60 | 60 | keyFn = function(t){return $(t).val();};break; |
61 | 61 | case 'accesskey': |
@@ -68,15 +68,18 @@ ER_sub.FRM ={ | ||
68 | 68 | keyFn = function(t){return $(t).attr(attr);};break; |
69 | 69 | } |
70 | 70 | $(tg).each(function(){ |
71 | - var $tg = $(this); | |
71 | + var $tg = $(this), W = false, | |
72 | + Ret = function(r){W=false;return r||false}; | |
72 | 73 | $tg.focus(function(){ |
73 | 74 | $tg .bind('keydown', (function(ev){ |
75 | + if ( W ) {return ;} | |
76 | + W = true; | |
74 | 77 | if (ER_sub.STR.Hstr.indexOf(String.fromCharCode(ev.keyCode)) < 0) { |
75 | - return ; | |
78 | + return Ret(true) ; | |
76 | 79 | } |
77 | 80 | var S = L = $tg.find('option:selected'), |
78 | 81 | select, i=0,iMax=$tg.find('option:enabled').length; |
79 | - if (iMax == 0) { return false; } | |
82 | + if (iMax == 0) { return Ret(false); } | |
80 | 83 | while (!select) { |
81 | 84 | if ( ev.shiftKey ){ |
82 | 85 | if (S.prevAll('option:enabled').length == 0) { |
@@ -93,15 +96,21 @@ ER_sub.FRM ={ | ||
93 | 96 | } |
94 | 97 | if ( ER_sub.FRM.key_is(ev.keyCode, keyFn(S)) && !S.attr('disabled')){ |
95 | 98 | select = S; |
99 | + // for Firefox | |
100 | + if ($.browser.mozilla && !ev.shiftKey && (attr == 'html' || attr == 'text') && keyFn(S).match(/[A-Za-z0-9]/)) { | |
101 | +// console.log('FireFox:' + $.browser.version, navigator.userAgent); | |
102 | + return Ret(true); | |
103 | + } | |
96 | 104 | } else { |
97 | 105 | i++; |
98 | - if ( i == iMax -1 ) { | |
99 | - select = L; | |
106 | + if ( i > iMax ) { | |
107 | + return Ret(false); | |
108 | +// select = L; | |
100 | 109 | } |
101 | 110 | } |
102 | 111 | } |
103 | 112 | $tg.val(select.val()).change(); |
104 | - return false; | |
113 | + return Ret(false); | |
105 | 114 | })); |
106 | 115 | }).blur(function(){ |
107 | 116 | $tg .unbind('keydown'); |
@@ -8,6 +8,11 @@ | ||
8 | 8 | * shiftキーを押している場合は前の候補を選択 |
9 | 9 | * ●放送波選択で選択可能チャンネル変更 |
10 | 10 | * |
11 | + * Version 0.2.5 | |
12 | + * 16:34 2012/03/10 | |
13 | + * ・Firefoxでブラウザのショートカットも実行されるバグ修正 | |
14 | + * ・ループ、二重処理対応 | |
15 | + * | |
11 | 16 | * Version 0.2.4 |
12 | 17 | * 10:31 2012/03/04 |
13 | 18 | * ・放送波選択でチャンネルが消えるバグ、ドキュメント修正 |