ラベル jQuery の投稿を表示しています。 すべての投稿を表示
ラベル jQuery の投稿を表示しています。 すべての投稿を表示

2014年6月25日水曜日

JQueryで連続した半角英数字を任意の場所で改行するプラグイン



長い半角英数字が改行されず思いのほかレイアウトが崩れることってありますよね。


特に掲示板みたいなユーザに入力してもらうようなシステムの場合


開発時に想定してなかった長い半角英数字なんかをいれられて、


後から「おおおなんじゃこりゃぁああああ」なんてことがたまにあります。





ただ、最近までレイアウトが多少崩れても「まぁいっか」くらいの気持ちでして(←だめだね)


どうしても解決しなければいけないときは、textarea を強引に流用したり誤魔化してきたような。。。。とはいえ、そんなずぼらなことではいけない気もするのでjQueryのプラグインを作ってみました。





IE系のCSSには、独自に拡張した word-break: break-all; を使えばすぐに解決できるのですがそれ以外のブラウザがまだ対応してないみたいでここがちょっとネックですね。


CSS3くらいには標準になるのかな?





いろいろ、調べてみると任意改行文字 8203を使うのがなんとなく意図した内容に近いみたいです。


各テキストの1文字ずつにこれを挟んでようやく解決。(しかし、テキストの量が多くなると処理に時間がかかりすぎるかも)





(追記)2009/12/09 version 0.2 以下の参照ページでご指摘いただいた修正をしました。


【jQuery】word-break:break-all;をie以外でも実装するjQueryプラグイン


げことじさんありがとうございました。





jquery.wb.js - 0.2



jQuery(function($){

$.wb = {

version: 0.2

,sep: String.fromCharCode(8203)

,remake: function(elm){
var h = elm.contents();
elm.html('');
$(h).each(function(){
if(this.nodeType == 3){
elm.append($.trim(this.textContent.split('').join($.wb.sep)));
}else if(this.textContent == ''){
elm.append(this);
}else{
elm.append($.wb.remake($(this)));
}
});
return elm;
}
}

$.fn.wb = function(){
if(/msie/i.test(navigator.userAgent)){
$(this).css('word-break', 'break-all');
}else{
$.wb.sep = (/firefox\/2/i.test(navigator.userAgent)) ? '<wbr />' : String.fromCharCode(8203);
$(this).each(function(){ $.wb.remake($(this));});
}

return $(this);
}
});


レイアウトの調整デモ





参考:FirefoxとOperaでword-break:break-allを実現する「wordBreak.js」





しかし、この任意改行文字のような特殊文字って結構あるんですね。


ぜんぜん知りませんでした。


特殊文字のコード一覧








※作ったもののJavascriptがONじゃないと使えないですねぇ。。。





2008年11月18日火曜日

jQueryでSelectの表示を変えるプラグイン



元ネタは、こちらを参考にさせていただきました。



プルダウンで都道府県などを入力(選択)するイライラを解消するPrefSupport.js


http://moto-mono.net/2008/07/19/prefsupport.html



プルダウンでたくさんの選択肢を表示するときに、スクロールバーがでてしまうのは


どうも、不恰好だなぁと思ったことのあるかたなら、利用してみてください。


デモ


JQueryでselectタグのプルダウンをカスタマイズする demo


ダウンロード


jquery.cs.js


利用には、jQueryが必要です。


追記(2009/11/20):jQuery-1.3.2 に対応いたしました。








特に、デザイン的に配慮はあまりしていませんので、シックで無骨な感じが気になる方は


素敵なデザインでサンプルを作ってもらえるとうれしいです。


プログラム的に、いろいろ悩んだところは


select タグをクリックすると、デフォルトのプルダウンが即座に出てしまうのを


Javascriptでどうやって制御するのかに苦労しました。


ブラウザごとに、プルダウン表示のタイミングが違うみたいで最終的に



1 mousedown event 取得
2 focus 実行
3 select disabled 属性 ture
4 blur 実行
5 event stop 実行


この順番で、処理をすると、意図した通りになりました。


(IE6,IE7,FF3,GC)


この辺は、ソースを見てもらえればわかると思います。


また、もっと上手な方法があるよーって方は、教えてもらえるとうれしいです。