inputボタンを押した後のスクロール位置 - PHPプロ!Q&A掲示板

2818

  • 0P

inputボタンを押した後のスクロール位置

質問日時 / 2010年7月20日 12:33    回答数 / 3件

Questioner:  houraku  このエントリーをはてなブックマークに追加 

キーワード / フォーム    スクロール    位置   

PHP初心者です。調べたつもりなのですが、既出等ありましたらすみません。

フォームについて質問なのですが、
inputボタンを押した後、ページが再読み込み?されてしまって、ページの下のほうにあるフォームが見えなくなってしまいます。
なので、inputボタンを押した時に、

  1. function jump(){
  2.   if(isset($_POST["check"])||isset($_POST["return"])){
  3.     header("Location:index.php#form");
  4.   }
  5. }

と書いたのですが、そうすると今度は

  1. if(isset($_POST["check"])){
  2.   checkform();
  3.   $_SESSION["massage"] = htmlspecialchars($_POST['message']);
  4. }

と書いた部分が効かなくなってしまったようで・・・
inputボタンを押したあとに、指定の場所まで戻すにはどうすればいいでしょうか

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimixまず・・。「inputボタンを押したときに」で書かれて
 ┗A01-1houraku返信ありがとうございます! 丁寧な説明まで・・・ 分か
  ┗A01-1-1hourakuすいません自己解決したかもしれないです。 >>CODE

回答一覧

並び替え:

A01 満足
answerershimix [7月20日 13:25]

まず・・。「inputボタンを押したときに」で書かれているスクリプトはphpのようなので、どこまでが(html及びJavaScriptの)form側でどこからがサーバのphpスクリプトなのか、分けて書いていただくとありがたいです。

「inputボタン」というのはどういうものでしょうか。ひょっとしてinput要素でtype属性がsubmitになっていませんか?それは(省略するとすれば)submitボタンと書かれた方がいいです・・。もしも(submitでない)input要素なのにご質問のような動作をするとすれば、JavaScriptか何かでformのsubmitを書いているとか・・ですかね。

で、submitすればサーバへ(formの内容が)POSTされて、サーバのプログラム(phpスクリプトなど)が返す内容をブラウザが再表示するというのはHTTPの基本です。おそらく使う側もそういう動作を期待していると思いますが、そういうことではないのでしょうか?

非同期で(ブラウザの画面を遷移させずにバックグラウンドで)やりとりする手法もないわけではありませんが、それ以前の何かを勘違いされているように思えます。

この意見に回答する

ツリーへ TOPへ

A01-1
replyerhouraku [7月20日 15:34]

返信ありがとうございます!
丁寧な説明まで・・・ 分かり辛い説明ですみません・・・!
submitになってます。inputボタンとは言わないんですね、気をつけます

すいません サーバのphpスクリプトというのが わからなくて
先ほどの jump() はサーバのphpスクリプトでしょうか・・・
あっ checkform() は JavaScriptではないです。JavaScriptは使っていないです。
PHPなら携帯でもいけるかなと安易に思っているのですが・・・

フォームの部分は
最初の表示がこちらで
  1. function formbox(){
  2.     echo '<form action="'._THIS.'" method="post">
  3.     <input name="message" type="text" class="massage" />
  4.     <input name="check" type="submit" class="conf" value="conf" />
  5.     </form>';
  6. }

再表示される画面です
  1. function checkform(){
  2.   $msg = htmlspecialchars($_POST['message']);
  3.   
  4.   if($msg==""){
  5.     echo "<p>中身が空のようです</p>";
  6.     echo '<form action="'._THIS.'" method="post">
  7.     <input name="return" type="submit" class="return" value="return" />
  8.     </form>';
  9.   }else{
  10.     echo "\n".'<form action="'._THIS.'" method="post">
  11.     <p>以下の内容で送信します。よろしいですか?</p>
  12.     <p class="massage">'.$msg.'</p>
  13.     <input name="message" type="hidden" value="'.$msg.'" />
  14.     <input name="submit" type="submit" class="send" value="send" />
  15.     <input name="return" type="submit" class="return" value="return" />
  16.     </form>';
  17.   }  
  18. }

こちらのような動きにしようとしました (下のプレーンタイプのエラー表示です)
http://www.ninja.co.jp/mailform/sample.html

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyerhouraku [7月20日 17:00]

すいません自己解決したかもしれないです。

  1. <form action="'._THIS.'#form" method="post">

これでいけるかも・・・ お騒がせしましたお恥ずかしい・・・

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)