--------(--)

スポンサーサイト

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

JavaScriptで文字の部分選択

ASP.NETでAjaxControlToolkitのMaskedEditExtenderを使って入力チェックをかけてみました。
入力項目がフォーカスを得た時には、文字を選択状態にし即座に上書き入力ができるようにという条件があります。
ところが、文字を選択状態にすると小数点のある数値の入力がうまくいきません。
いろいろ試してみると、整数部のみを選択状態にしておくと入力がうまくいくようなので、入力項目がフォーカス
を得た時に通常は全文字を選択し、小数点項目については整数部のみ選択するようにしてみました。

なお、前提としてMaskedEditExtenderのIDは入力項目のID + "Mee"という名前になっています。


$(document).ready(function () {
$('input[type=text], input[type=password], textarea').focus(function () {
var str = this.id + 'Mee';
if ($find(str)) {
//MaskedEditExtender項目
var mee = $find(str);
if (mee._Mask.indexOf('.') > -1) {
//Mask文字に小数点あり
if (this.createTextRange) {
//createTextRangeをサポート(IE)
var rng = this.createTextRange();
setTimeout(function () { rng.moveStart("character", 0); }, 0);
setTimeout(function () { rng.moveEnd("character", mee._Mask.indexOf('.') - mee._Mask.length); }, 0);
setTimeout(function () { rng.select(); }, 0);
} else {
//createTextRangeを非サポート(IE以外)
var self = this;
setTimeout(function () { self.setSelectionRange(0, mee._Mask.indexOf('.') + mee._AcceptNegative); }, 0);
}
} else {
//Mask文字に小数点なし
var self = this;
setTimeout(function () { $(self).select(); }, 0);
}
} else {
//MaskedEditExtender項目以外
var self = this;
setTimeout(function () { $(self).select(); }, 0);
}
}
});


かなり特殊な用途なので必要になることは少ないと思いますが、IE、IE互換モード、Safari、Chromeで動作確認しました。


コメントの投稿

管理者にだけ表示を許可する

コメント



 
プロフィール
Author:OMEGAT
FC2ブログへようこそ!
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
FC2カウンター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
忍者AdMax
検索フォーム
カテゴリ
ブロとも申請フォーム

この人とブロともになる

amazonお奨め商品



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