スレッド表示 | フラット表示〕 全トピック 920 件中 191 番目 次≫ ≪前

入力チェックについて色々

created: 2006-09-08 15:47 | modified: 2006-09-11 09:54 | reply: 4

[3281] 入力チェックについて色々

user: なお | created: 2006-09-08 15:47
PHP初心者です。
簡単なものから・・・と取り組み始めましたが、早速つまずいてしまいました。

フォームにテキストボックスがいくつかあって、OKボタンをクリックしたとき入力チェックを行ないます。
エラーになったとき同一フォームにメッセージを表示します。(入力した内容も表示します)
このとき、カーソルをエラーとなったテキストボックスに当てたい(フォーカスしたい)のですが、うまくいきません。
どうすれば解決できるでしょうか?ご教授お願いします。

省略してコードを書き出してみました。ザッとこんな感じです。
エラーになる度にその項目にカーソルを当てるコードが作れません。
宜しくお願い致します。


<html>
<head>
<title>入力画面</title>
</HEAD>

<body onload='window.document.all.box1.focus()'>
<P align='center'><b><font size='+2'>入力画面</font></b></p>
<hr><br>

<?php
if (!isset($_POST['exec'])) {
$_POST['name'] = "";
$_POST['kana'] = "";
$_POST['mail'] = "";
$_POST['team'] = "";
}

else {
$name = $_POST['name'];
$kana = $_POST['kana'];
$mail = $_POST['mail'];
$team = $_POST['team'];

if (strlen($name) == 0) {
print "<center><font color='red'><b>氏名を入力して下さい</b></font></center>";
}

elseif (strlen($kana) == 0) {
print "<center><font color='red'><b>ふりがなを入力して下さい</b></font></center>";
}

elseif (strlen($mail) == 0) {
print "<center><font color='red'><b>メールアドレスを入力して下さい</b></font></center>";
}
}

?>

<!-- フォームの表示 -->
<form method="post" action="test.php">
<center><table cellpadding=2>
<tr>
<td bgcolor="lavender">氏 名</td>
<td><input id="box1" size="20" type="text" name="name" value="<?=$_POST['name']?>" style="ime-mode:active"></td>
</tr>
<tr>
<td bgcolor='lavender'>氏 名(ふりがな)</td>
<td><input id="box2" size='20' type='text' name='kana' value="<?=$_POST['kana']?>"></td>
</tr>
<tr>
<td bgcolor='lavender'>メールアドレス</td>
<td><input id='box3' size='26' type='text' name='mail' value="<?=$_POST['mail']?>">@xxxxxx.co.jp</td>
</tr>
<tr>
<td bgcolor='lavender'>所 属</td>
<td><input id=box4' size='40' type='text' name='team' value="<?=$_POST['team']?>"></td>
</tr>
</table></center><br>

<center><input type='submit' name='exec' value=' O K '></center>
</form>

</body>
</html>
reply: 3282 3283 返信 編集 削除

[3282] body onload のJavaScriptアクション

user: シロウ ホームページ | created: 2006-09-08 19:45
はじめましてシロウと申します。

フォーカスを設定しているJavaScriptが固定されていたので
PHPでIDを変更してあげます。
window.document.all.box<?php echo $number; ?>.focus()

<?php
if (!isset($_POST['exec'])) {
$_POST['name'] = "";
$_POST['kana'] = "";
$_POST['mail'] = "";
$_POST['team'] = "";
} else {
$name = $_POST['name'];
$kana = $_POST['kana'];
$mail = $_POST['mail'];
$team = $_POST['team'];

$number = 4;
if (strlen($name) == 0) {
$number = 1;
print "<center><font color='red'><b>氏名を入力して下さい</b></font></center>";
} elseif (strlen($kana) == 0) {
$number = 2;
print "<center><font color='red'><b>ふりがなを入力して下さい</b></font></center>";
} elseif (strlen($mail) == 0) {
$number = 3;
print "<center><font color='red'><b>メールアドレスを入力して下さい</b></font></center>";
}
}

?>

<html>
<head>
<title>入力画面</title>
</HEAD>

<body onload='window.document.all.box<?php echo $number; ?>.focus()'>
<P align='center'><b><font size='+2'>入力画面</font></b></p>
<hr><br>


<!-- フォームの表示 -->
<form method="post" action="test.php">
<center><table cellpadding=2>
<tr>
<td bgcolor="lavender">氏 名</td>
<td><input id="box1" size="20" type="text" name="name" value="<?php echo $_POST['name'];?>" style="ime-mode:active"></td>
</tr>
<tr>
<td bgcolor='lavender'>氏 名(ふりがな)</td>
<td><input id="box2" size='20' type='text' name='kana' value="<?php echo $_POST['kana'];?>"></td>
</tr>
<tr>
<td bgcolor='lavender'>メールアドレス</td>
<td><input id='box3' size='26' type='text' name='mail' value="<?php echo $_POST['mail'];?>">@xxxxxx.co.jp</td>
</tr>
<tr>
<td bgcolor='lavender'>所 属</td>
<td><input id='box4' size='40' type='text' name='team' value="<?php echo $_POST['team'];?>"></td>
</tr>
</table></center><br>

<center><input type='submit' name='exec' value=' O K '></center>
</form>

</body>
</html>
Parent: 3281  reply: 3361 返信 編集 削除

[3361] 御礼

user: なお | created: 2006-09-11 09:39
適切な回答ありがとうございます。

早速試したところ思った通りの動きになりました。
初心者向けの分かり易い簡単な回答で助かりました。

今後も何かの折、お世話になるかもしれませんが
宜しくお願い致します。

本当にありがとうございました。
Parent: 3282  返信 編集 削除

[3283] こんなんでどうでしょう?

user: そろり | created: 2006-09-08 19:53
独学なので、思うように動くって感じの内容です。
ちょっと、アレンジもしました。
メールは、アカウントだけ入れる形にするんでしょうか?
一応、すべて入れる形でエラーでるようにしました。
私は、全文<? ?>で囲む習慣があるので、下記のような形になっています。
基本的には、何がエラーになったよ!というのを
javascriptで理解させてあげるだけです。

<?
if (!isset($_POST['exec'])) {
$_POST['name'] = "";
$_POST['kana'] = "";
$_POST['mail'] = "";
$_POST['team'] = "";
}else {
$name = $_POST['name'];
$kana = $_POST['kana'];
$mail = $_POST['mail'];
$team = $_POST['team'];
if(!$name) {
$error .= "<center><font color='red'><b>氏名を入力して下さい</b></font></center>";
$ncolor = "pink";
}
if(!$kana) {
$error .= "<center><font color='red'><b>ふりがなを入力して下さい</b></font></center>";
$kcolor = "pink";
}
if (!preg_match('/(.*)\@(.*)\.(.*)/',$mail)) {
$error .= "<center><font color='red'><b>メールアドレスが間違ってるか、入力されてません。</b></font></center>";
$mcolor = "pink";
}
}

echo <<<EOM
<html>
<head>
<title>入力画面</title>
</HEAD>
<body>
<P align='center'><b><font size='+2'>入力画面</font></b></p>
<hr><br>
$error
<form method="post" name="test" action="test.php">
<center>
<table cellpadding=2>
<tr><td bgcolor="lavender">氏 名</td>
<td bgcolor="$ncolor"><input id="box1" size="20" type="text" name="name" value="$name" style="ime-mode:active;"></td></tr>
<tr><td bgcolor='lavender'>氏 名(ふりがな)</td>
<td bgcolor="$kcolor"><input id="box2" size='20' type='text' name='kana' value="$kana"></td></tr>
<tr><td bgcolor='lavender'>メールアドレス</td>
<td bgcolor="$mcolor"><input id="box3" size='26' type='text' name='mail' value="$mail">@xxxxxx.co.jp</td></tr>
<tr><td bgcolor='lavender'>所 属</td>
<td><input id="box4" size='40' type='text' name='team' value="$team"></td>
</tr></table></center><br>
<center><input type='submit' name='exec' value=' O K '>
</center></form>
<SCRIPT LANGUAGE="JavaScript">
<!--
ern = "$ncolor";
erk = "$kcolor";
erm = "$mcolor";
if(ern){self.document.test.name.focus();
}else if(erk){self.document.test.kana.focus();
}else if(erm){self.document.test.mail.focus();
}else{self.document.test.name.focus();
}
// -->
</SCRIPT>
</body></html>
EOM;
?>
Parent: 3281  reply: 3362 返信 編集 削除

[3362] 御礼

user: なお | created: 2006-09-11 09:54
早速の回答ありがとうございました。

シロウさん同様試させて頂きました。
最初にコードを見た時、難しそうなイメージを持ったのですが
試してみて「こういうのもありだな」と思いました。
動きは狙い通りでした。

JavaScriptに関してはまだまだ「さわり」しか分からないので、もう少し勉強してみたいと思っています。
その際はまたご教授よろしくお願い致します。

本当にありがとうございました。
Parent: 3283  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 191 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑