プロが教える店舗&オフィスのセキュリティ対策術

PHPでページング機能を作ることが出来たのですが、
テキスト・タイプのフォームを下記のようにすると、

<input type="text" size="5" name="page" value="">

フィールドの中に表示したいページの数字を入力して
フォームを送信するとそのページへ移動するという仕組みで、
ここまでは問題なく出来たのですが、
実際のページ数以上の数字を入力した時に
エラー文をポップアップ表示させたいのです。

例えば、実際1ページしかないのに、フィールドの中に2を入力して
送信すると、エラー文が出てくるという感じです。

送信ボタンにOnClickなどでJavaScriptを呼び出すようにし、
入力されたページ番号が適正かどうかのチェックを行い、
適正であればそのまま送信処理、不正であればアラートを出す
という仕組みなのは大体分かりますが、
余りJavaScriptに詳しくないので、
どんなコードを作成すれば良いのか分かりません。

何方か、サンプルコードなど教えて頂けたら大変助かります。
お手数をおかけしますが、どうぞ宜しく御願いします。

A 回答 (3件)

<html>


<body>
<form action="test1.html">
<input type="text" size="5" name="page" value="" onChange="
var v=this.value;
if(!v.match(/^\d$/))alert('不正な文字');
if(v<0 || 5<v) alert('範囲外です');
"><br />

<input type="submit" value="go" onClick="chk()?true:false">
</form>
<script>
function chk(){
v=document.getElementsByName('page')[0].value;
if(v.match(/^\d$/) && 0<v && v<6) return true;
alert('不正な値です');
return false;
}
</script>

</body>
</html>

この回答への補足

_pipi_さま、早速の御回答どうも有難うございます。

下記のようにスクリプトの中にPHPコードをいれたのですが、

例えば、そこには1ページしかページ数がないとして、
2以上の数字を入れて送信ボタンをクリックすると
「範囲外です」というアラート・メッセージを出すのは成功したのですが、

同じ数字「1」や「0」の数字、空文字、などを入れて送信ボタンを押すと、
「不正な値です」というアラート・メッセージを出してから
ページがリロードします。

そのメッセージを出した後、何故だか、2以上のどんな数字を入れても
同じ「不正な値です」というアラート・メッセージを出してから
ページがリロード(その数字のページを表示しようとする)してます。

スクリプトの中にあるPHPコードの $maxPage は
その表示されてるページの総ページ数です。

お忙しい中すみません、
お手数ですが、教えて頂けると大変助かります。
宜しく御願いします。

<form action="<?=$_SERVER['PHP_SELF'] ?>" method="get">

<input type="text" size="5" name="page" value="" onChange="
var v=this.value;
if(!v.match(/^\d$/))alert('不正な文字');
if(v<0 || <? echo $maxPage; ?><v) alert('範囲外です');">

<input type="image" value="submit" src="images/go.jpg" onClick="chk()?true:false">

</form>


<script>
function chk(){
v=document.getElementsByName('page')[0].value;

if(v.match(/^\d$/) && 0<v && v<<? echo $maxPage; ?>) return true;
alert('Invalid');
return false;
}
</script>

補足日時:2008/04/12 10:22
    • good
    • 0

#1の方のとは全然違いますが


こんな感じでいけるんじゃないかと思います・・・・・


<html>
<head>
<script type="text/javascript">
MaxPage=<? echo $maxPage; ?>;
function check(){
obj=document.forms[0].elements["page"];
if(obj.value==""){
alert("数字を入力してください!!");
return false;
}else if(isNaN(obj.value)){
alert("数字を入力してください!!");
return false;
}else if(obj.value<=0||obj.value>MaxPage){
alert("1から"+MaxPage+"までの整数を入力して下さい");
return false;
}else{
return true
}
}
</script>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF'] ?>" method="get" onsubmit="return check()">

<input type="text" size="5" name="page" value="" />

<input type="image" src="images/go.jpg" alt="送信" />
</form>
</body>
</html>



.
    • good
    • 0
この回答へのお礼

arenani_sorenaniさま、

早速御回答して頂きどうも有難うございます。

arenani_sorenaniさまの教えて頂いたスクリプトで
問題が解決致しました。

また何かありましたらその時はどうぞ宜しく御願い致します。
どうも有難うございました。

お礼日時:2008/04/12 12:04

ごめん!でかけなきゃならなくて・・・



<input type="image" value="submit" src="images/go.jpg" onClick="chk()?true:false">
じゃ飛べないかもよ?

chk()でおOKならその中で飛ばしては?
document.formname.submit();
formname はフォームの名前、省略されてるみたいだけどね。
ごめん!本当に時間が無い!
    • good
    • 0
この回答へのお礼

_pipi_さま、

お忙しい中又御回答して頂きどうも有り難うございます。

お蔭様で問題が解決致しました。

又機会がありましたらその時はどうぞ宜しく御願い致します。

どうも有難うございました。

お礼日時:2008/04/12 12:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!