- 締切済み
jqueryでime入力中の挙動について
現在、リアルタイムに検索するUIを作成しているのですが、 ime入力(日本語入力)中にget送信し、同時に入力している input要素をcssで移動すると一文字目が表示されません。 どなたかご教授ください。 よろしくおねがいいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 ちょっと試してみましたが私の環境では特にそういった現象が起きませんでした。 お役に立てなくて申し訳ございません。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 補足ありがとうございました。 しかし、ソースだけを提示頂いても仕様や現在起こっていることがよくわかりません。 再現させるオペレーション(こうやってこうしたとき)、この辺じゃないかな?という当たりをつけた場所等もお教えください。 読んでればある程度の仕様は見えてきますが、正確な仕様が無いと何を持ってバグと言っているのかがわからないです。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 現状のソースでどのような処理をしているかがわからないと回答が難しいです。 開示できるのであれば補足ください。
補足
さっそく回答ありがとうございます。 ソースは下記のような感じです。 どうぞよろしくお願いいたします。 html----------------------------------------------------------------------- <input type="text" maxlength="2048" autocomplete="off" size="41" title="検索" value="" id="q" name="q" /> script--------------------------------------------------------------------- $(function(){ var q=$('input#q'); q.replaceWith('<span id="clear"></span>'); $('span#clear').append(q).append('<span class="clear">×</span>').addClass('clear-group'); var group=$('span#clear').css('height',q.attr('offsetHeight')),btn=$('span.clear',group).css('height',group.height()); if(q.val().length<1)btn.hide(); q.focus(); $('div#body').after('<div id="search_results"></div>'); $('div#search_button').click(function(e){ e.preventDefault(); ajax_search(); }); q.keyup(function(e){ e.preventDefault(); ajax_search(); }); //Firefox IME q.bind('text',function(e){ e.preventDefault(); ajax_search(); }); //clear btn.click(function(){ q.val(''); ajax_search(); }); function ajax_search(){ var r=$('div#search_results'); if(q.val().length>0){ btn.show(); r.show(); if(!$('#body').hasClass('search')){ $('div#logo div,input#f_search_button,div#news,div#foot,a#change_bg,img#bg,address').hide(); group.css({'float':'left','width':'570px'}); $('div#q_box') .before($('div#logo') .css({margin:0,background:'url("./common/img/logo_ss.png") no-repeat',width:'114px',height:'41px',float:'left',margin:'18px 2.8%'}) ).css({float:'left',margin:'24px 0',width:'660px'}); q.css({margin:0}); $('div#logo h1') .wrapInner($('<a></a>') .attr('href',location.href) .css({display:'block',width:'114px',height:'41px'}) ); } $('div#body').addClass('search'); $.get('../search.php',{'q':q.val()},function(data){ if(data.length>0){ r.html(data); } }); }else{ btn.hide(); r.slideUp(); q.focus(); } } });
補足
たびたび申し訳ございません。 仕様に関しては最初にあげたとおり、 文字入力するたびにget送信して、その戻り値を アウトプットしておるのですが、 最初の一文字を打ってcssにて、レイアウト変更しております。 imeで一文字だけ入力した場合、firefoxにてinputから文字が消えてしまいます。 二文字目を入力すると最初の文字も出てきます。 例) 「あ」 と入力するとinputから消えてしまう。 「ああ」 と入力するとinputに「ああ」と表示される。 その他に、firefoxにてimeで二文字目を入力するとget送信がされなかったりします。 思い当たるところで、処理の順番を入れ替えたりしてみましたが、 内容は改善されませんでした。