ブラウザの「更新」ボタンが押されるなどで
同じリクエストが送られた場合を判別するためには
リクエストを送るときにIDを付加する。
JavaScriptの
Date.getTime()
で現在時刻を表す数字をとってきてIDにする方法は以下の通り。
1.URLにIDを付加する
<a href="javascript:location.href=encodedURL('requestURL','idname');">
リンク
</a>
2.フォームの隠し属性でIDを付加する
<form name="formname" action="requestURL"
onsubmit="setID(this.hiddenname);">
<input type="hidden" name="hiddenname" value="">
<input type="submit" value="go!!">
encodedURLとsetIDのソースは下記参照
//URLにIDを付加
function encodedURL(url,name){
//URLの#までの部分を取得
var indx=url.indexOf("#");
var encodedurl;
if(indx!=-1){
encodedurl = url.substring(0,indx);
}
else{
encodedurl = url;
}
//現在時刻をIDとして使用
var id =(new Date).getTime();
//IDをURLに付加
if(url.match(/\?/)){
encodedurl += "&"+name+"=";
}
else{
encodedurl += "?"+name+"=";
}
encodedurl +=id;
//#より右の部分を付加
if(indx != -1){
encodedurl += url.slice(indx);
}
return encodedurl;
}
//フォームのIDを設定
function setID(id){
id.value= (new Date).getTime();
}
「戻る」でページに戻れないようにする
<a href="http://google.co.jp">
google(戻ってこれる)
</a>
でリンク先に飛ぶとブラウザの「戻る」で戻ってこれるが、
<a href="javascript:location.replace('http://google.co.jp');">
google(戻ってこれない)
</a>
のようにlocation.replaceを使用すると戻ってこれなくなる。
サンプル
google(戻ってこれる)
google(戻ってこれない)
google(戻ってこれる)
</a>
でリンク先に飛ぶとブラウザの「戻る」で戻ってこれるが、
<a href="javascript:location.replace('http://google.co.jp');">
google(戻ってこれない)
</a>
のようにlocation.replaceを使用すると戻ってこれなくなる。
サンプル
google(戻ってこれる)
google(戻ってこれない)
入力を制限する
chkinput.jsファイルをHTML(JSP)ファイルのあるフォルダに置き
<head>の中に
<head>
<script type="text/javascript" src="chkinput.js">
</script>
</head>
のように追加する。
そして、入力を数字だけに制限したいときには
<input type="text" onkeyup="restricttoN(this)">
のように書く。
------- chkinput.js -------
//入力を数字に制限
function restricttoN(str){
str.value=str.value.replace(/\D/g, "");
}
//入力を英数字に制限
function restricttoalphameric(str){
str.value=str.value.replace(/[^0-9a-zA-Z]/g,"");
}
//全角英数字を半角に変換
function chkCode1(id) {
work='';
for (lp=0;lp<id.value.length;lp++) {
unicode=id.value.charCodeAt(lp);
if ((0xff0f<unicode) && (unicode<0xff1a)) {
work+=String.fromCharCode(unicode-0xfee0);
} else if ((0xff20<unicode) && (unicode<0xff3b)) {
work+=String.fromCharCode(unicode-0xfee0);
} else if ((0xff40<unicode) && (unicode<0xff5b)) {
work+=String.fromCharCode(unicode-0xfee0);
} else {
work+=String.fromCharCode(unicode);
}
}
id.value=work; /* 半角処理のみ */
}
//半角英数字を全角に変換
function chkCode2(id) {
work='';
for (lp=0;lp<id.value.length;lp++) {
unicode=id.value.charCodeAt(lp);
if ((0xff0f-0xfee0<unicode) && (unicode<0xff1a-0xfee0)) {
work+=String.fromCharCode(unicode+0xfee0);
} else if ((0xff20-0xfee0<unicode) && (unicode<0xff3b-0xfee0)) {
work+=String.fromCharCode(unicode+0xfee0);
} else if ((0xff40-0xfee0<unicode) && (unicode<0xff5b-0xfee0)) {
work+=String.fromCharCode(unicode+0xfee0);
} else {
work+=String.fromCharCode(unicode);
}
}
id.value=work; /* 半角処理のみ */
}
<head>の中に
<head>
<script type="text/javascript" src="chkinput.js">
</script>
</head>
のように追加する。
そして、入力を数字だけに制限したいときには
<input type="text" onkeyup="restricttoN(this)">
のように書く。
------- chkinput.js -------
//入力を数字に制限
function restricttoN(str){
str.value=str.value.replace(/\D/g, "");
}
//入力を英数字に制限
function restricttoalphameric(str){
str.value=str.value.replace(/[^0-9a-zA-Z]/g,"");
}
//全角英数字を半角に変換
function chkCode1(id) {
work='';
for (lp=0;lp<id.value.length;lp++) {
unicode=id.value.charCodeAt(lp);
if ((0xff0f<unicode) && (unicode<0xff1a)) {
work+=String.fromCharCode(unicode-0xfee0);
} else if ((0xff20<unicode) && (unicode<0xff3b)) {
work+=String.fromCharCode(unicode-0xfee0);
} else if ((0xff40<unicode) && (unicode<0xff5b)) {
work+=String.fromCharCode(unicode-0xfee0);
} else {
work+=String.fromCharCode(unicode);
}
}
id.value=work; /* 半角処理のみ */
}
//半角英数字を全角に変換
function chkCode2(id) {
work='';
for (lp=0;lp<id.value.length;lp++) {
unicode=id.value.charCodeAt(lp);
if ((0xff0f-0xfee0<unicode) && (unicode<0xff1a-0xfee0)) {
work+=String.fromCharCode(unicode+0xfee0);
} else if ((0xff20-0xfee0<unicode) && (unicode<0xff3b-0xfee0)) {
work+=String.fromCharCode(unicode+0xfee0);
} else if ((0xff40-0xfee0<unicode) && (unicode<0xff5b-0xfee0)) {
work+=String.fromCharCode(unicode+0xfee0);
} else {
work+=String.fromCharCode(unicode);
}
}
id.value=work; /* 半角処理のみ */
}
数字以外の入力禁止
<script type="text/javascript">
<!--
function restricttoN(str){
str.value=str.value.replace(/\D/g, "");
}
//-->
</script>
<input type="text" onkeyup="restrictto(this);" >
<!--
function restricttoN(str){
str.value=str.value.replace(/\D/g, "");
}
//-->
</script>
<input type="text" onkeyup="restrictto(this);" >
正規表現による比較
str.match(/\w/) 数値一文字を表す
str.match(value) strと文字列を比較
正規表現について
str.match(value) strと文字列を比較
正規表現について
- *: 0回以上の繰り返し(最長マッチ。?をつけると最短)
- +: 1回以上の繰り返し(最長マッチ。?をつけると最短)
- {a}: a回マッチ
- {a,}: a回以上マッチ(最長マッチ。?をつけると最短)
- {a,b}: a回以上b回以下マッチ(最長マッチ。?をつけると最短)
- ^abc: 先頭に位置指定
- abc$: 末尾に位置指定
| ひとつの文字や数字 | |
| . | 改行文字を除く任意の1文字 |
| c | メタキャラではない1文字 |
| [a-z0-9] | [ ]の中の任意の1文字(小文字大文字は別として扱う) |
| [^a-z0-9] | [ ]の中にない任意の1文字 |
| \w | アルファベット、数字又は下線 |
| \W | アルファベット、数字、下線以外 |
| \d | 数字 |
| \D | 数字以外[^0-9]と同じ |
| \s | 空白文字(スペース、タブ、改行) |
| \S | 空白文字以外 |
| \n | 改行 |
| \r | リターン(復帰) |
| \t | タブ |
| \d | バックスペース |
| \o | 8進数の値 |
| \x811 | 16進数の値 |
| \cx | 制御文字 |
| 数量子 | |
| ? | 直前の文字が0個または1個 |
| * | 直前の文字が0個以上 |
| + | 直前の文字が1個以上 |
| {a} | 直前の文字がa個 |
| {a,} | 直前の文字がa個以上 |
| {a,b} | 直前の文字がa個以上b個以下 |
| ?? | 直前の文字が0個または1個 ( 注1 |
| *? | 直前の文字が0個以上 ( 注1 |
| +? | 直前の文字が1個以上 ( 注1 |
| {a}? | 直前の文字がa個 ( 注1 |
| {a,}? | 直前の文字がa個以上 ( 注1 |
| {a,b}? | 直前の文字がa個以上b個以下 ( 注1 |
| 位置指定 | |
| ^ | 行頭 |
| $ | 行末 |
| \b | 単語の区切り |
| \B | 単語の区切り以外 |
| その他 | |
| \ | 次のメタ文字をクォートする ( \. → "."自信を表わす) |
| () | グループ化 |
| 特殊変数 | |
| \1、$1 | はじめにマッチした項目 |
| \2、$2 | 2番目にマッチした項目 |
英数字を半角にする
<type="text/javascript">
function chkCode(id) {
work='';
for (lp=0;lp<id.value.length;lp++) {
unicode=id.value.charCodeAt(lp);
if ((0xff0f<unicode) && (unicode<0xff1a)) {
work+=String.fromCharCode(unicode-0xfee0);
} else if ((0xff20<unicode) && (unicode<0xff3b)) {
work+=String.fromCharCode(unicode-0xfee0);
} else if ((0xff40<unicode) && (unicode<0xff5b)) {
work+=String.fromCharCode(unicode-0xfee0);
} else {
work+=String.fromCharCode(unicode);
}
}
id.value=work; /* 半角処理のみ */
//id.value=work.toUpperCase(); /* 大文字に統一する場合に使用 */
//id.value=work.toLowerCase(); /* 小文字に統一する場合に使用 */
}
</script>
function chkCode(id) {
work='';
for (lp=0;lp<id.value.length;lp++) {
unicode=id.value.charCodeAt(lp);
if ((0xff0f<unicode) && (unicode<0xff1a)) {
work+=String.fromCharCode(unicode-0xfee0);
} else if ((0xff20<unicode) && (unicode<0xff3b)) {
work+=String.fromCharCode(unicode-0xfee0);
} else if ((0xff40<unicode) && (unicode<0xff5b)) {
work+=String.fromCharCode(unicode-0xfee0);
} else {
work+=String.fromCharCode(unicode);
}
}
id.value=work; /* 半角処理のみ */
//id.value=work.toUpperCase(); /* 大文字に統一する場合に使用 */
//id.value=work.toLowerCase(); /* 小文字に統一する場合に使用 */
}
</script>
登録:
投稿 (Atom)