- ベストアンサー
PHPのページング機能で、実際のページ数以上の数字を入力した時にエラー文をポップアップ表示させたい。
PHPでページング機能を作ることが出来たのですが、 テキスト・タイプのフォームを下記のようにすると、 <input type="text" size="5" name="page" value=""> フィールドの中に表示したいページの数字を入力して フォームを送信するとそのページへ移動するという仕組みで、 ここまでは問題なく出来たのですが、 実際のページ数以上の数字を入力した時に エラー文をポップアップ表示させたいのです。 例えば、実際1ページしかないのに、フィールドの中に2を入力して 送信すると、エラー文が出てくるという感じです。 送信ボタンにOnClickなどでJavaScriptを呼び出すようにし、 入力されたページ番号が適正かどうかのチェックを行い、 適正であればそのまま送信処理、不正であればアラートを出す という仕組みなのは大体分かりますが、 余りJavaScriptに詳しくないので、 どんなコードを作成すれば良いのか分かりません。 何方か、サンプルコードなど教えて頂けたら大変助かります。 お手数をおかけしますが、どうぞ宜しく御願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#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> .
その他の回答 (2)
ごめん!でかけなきゃならなくて・・・ <input type="image" value="submit" src="images/go.jpg" onClick="chk()?true:false"> じゃ飛べないかもよ? chk()でおOKならその中で飛ばしては? document.formname.submit(); formname はフォームの名前、省略されてるみたいだけどね。 ごめん!本当に時間が無い!
お礼
_pipi_さま、 お忙しい中又御回答して頂きどうも有り難うございます。 お蔭様で問題が解決致しました。 又機会がありましたらその時はどうぞ宜しく御願い致します。 どうも有難うございました。
<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>
お礼
arenani_sorenaniさま、 早速御回答して頂きどうも有難うございます。 arenani_sorenaniさまの教えて頂いたスクリプトで 問題が解決致しました。 また何かありましたらその時はどうぞ宜しく御願い致します。 どうも有難うございました。