スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DataTables でカンマがある時のソート方法

前にメモっておいたテーブルの内容をソートしたり、検索してくれるjQueryのプラグインDataTablesで、カンマが混じった数値を数値としてソートする方法。
(通常は文字列としてソートされてしまう)

以下のファイルを作成

jquery.dataTables.numeric-comma.js

/* Note 'unshift' does not work in IE6. A simply array concatenation would. This is used
* to give the custom type top priority
*/
jQuery.fn.dataTableExt.aTypes.unshift(
function ( sData )
{
var sValidChars = "0123456789-,";
var Char;
var bDecimal = false;

/* Check the numeric part */
for ( i=0 ; i<sData.length ; i++ )
{
Char = sData.charAt(i);
if (sValidChars.indexOf(Char) == -1)
{
return null;
}

/* Only allowed one decimal place... */
if ( Char == "," )
{
if ( bDecimal )
{
return null;
}
bDecimal = true;
}
}

return 'numeric-comma';
}
);

jQuery.fn.dataTableExt.oSort['numeric-comma-asc'] = function(a,b) {
var x = (a == "-") ? 0 : a.replace( /,/, "." );
var y = (b == "-") ? 0 : b.replace( /,/, "." );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};

jQuery.fn.dataTableExt.oSort['numeric-comma-desc'] = function(a,b) {
var x = (a == "-") ? 0 : a.replace( /,/, "." );
var y = (b == "-") ? 0 : b.replace( /,/, "." );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
};

これは、DataTablesのサイトのplug-insにあったソースをそのままコピペ。

呼び出し側は以下のように変更

$(document).ready(function() {
$('#sortListTable').dataTable( {
"aaSorting": [[ 0, "asc" ]],
"aoColumns": [
null,
null,
]
} );
} );



$(document).ready(function() {
$('#sortListTable').dataTable( {
"aaSorting": [[ 0, "asc" ]],
"aoColumns": [
{ "sType": 'numeric-comma' },
{ "sType": 'numeric-comma' }
]
} );
} );
スポンサーサイト

$()関数とjQueryオブジェクト

javascriptとかで動的にHTML作る時に、

ul = document.createElement('ul');
ul.setAttribute('id', 'cls');

for(i=0; i<5; i++){
li = document.createElement('li');
li.innerText = i + '番目';
}
ul.appendChild(li);


とかってやってたけど、それで作ったHTMLにjQueryで作ったオブジェクトからアクセスが出来ないらしい!

var ul = $('#cls');
alert(ul.attr('id')); ← undefined になってしまう


これは、作るのもjQueryで作らないといけないらしい。

var p = $('#box');
// クリア
p.empty();

var ul = $('
    ').addClass('cls');

    for(i=0; i<5; i++){
    var li = $('
  • ').append(i + '番目');
    ul.append(li);
    }
    p.append(ul);



  • 参考サイト

    ASP.NETプログラマーのためのjQuery入門

    自ホストから指定したホストまでの到達経路とその中継時間を表示してくれるコマンド[Tracert]

    Tracertコマンドは、自ホストから指定したホストまで、どのような経路を辿っているかを調べるコマンド。
    ネットワークが遅い時とかに、どの部分で時間がかかっているか等が確認出来ます。


    tracert [相手先ホスト名] または[相手先IPアドレス]


    参考にしたのはココ

    windows7のwebdavの追加方法

    XPだと、ネットワークプレースの追加とかで、ウィザードに従っていけば簡単に出来るけど、windows7ではそれがないらしい。

    ただ、コマンドプロンプトで追加が出来るのでメモ。

    net use z: http://test.com/dav/

    これだけ。
    zの部分は、ネットワークに割り当てるドライブを指定して
    あとは、webdavのURLを設定するだけ。

    電話番号のチェック

    電話番号の入力チェックで、正規表現とかでゴリゴリやるよりわかりやすくて、確実っぽいチェック方法。


    $phone = '01-2345ー6789';
    $number = preg_replace('/[^\d]+/', '', $phone);

    if ('0' === $number{0} && (10 == strlen($number) || 11 == strlen($number))) {
    echo 'OK: ',$number;
    } else {
    echo 'BAT!: ',$number;
    }


    区切りがハイフンじゃなくて、全角の文字とかになっちゃってても
    チェックが素通り出来ます。

    プロフィール

    U2K

    Author:U2K
    いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

    オススメ










    オススメ

    忍者AdMax

    u2k on Twitter

    最近の記事


    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。