-1

フォームセクションに入力されない場合にポップアップするエラーを設定しようとしています。[送信]をクリックすると、名前とメール部分の部分は機能しますが、コメントセクションは機能しません。コメントセクションに入力し始めると、約5スペースから始まるので、フィールドに何かがあるように見えます。それを削除してフォームを送信すると、上記の2つのフィールドのように、フィールドの右側ではなくコメントセクションにエラーメッセージが表示されますか?助けてください?

<!DOCTYPE html>
<html>
<head>
<title>My Guestbook</title>
<style type="text/css">
.errors { color: ff0000; }
</style>
</head>
<body>
<?php    /* Opening tag of php */

  //initialize error array
  $errors=array();

  //main logic
  if(isset($_REQUEST['submit'])){
    checkForm();
}
  else{
    printForm();
}
  //begin functions
  function checkForm()
{
  global $errors;
  if($_POST[name] == "")
      $errors['name']="<span class=\"errors\"><b>&nbsp Please, enter your Name!</span>";
  if($_POST[email] == "")
      $errors['email']="<span class=\"errors\"><b>&nbsp Please, enter your Email!</span>";
  if($_POST[myComments] == "")
      $errors['myComments']="<span class=\"errors\"><b>&nbsp Please, enter something!             </span>";          

  if(count($errors) !=0)
    printForm();
  else
    confirm();
} //end checkForm function

function confirm(){
print "<h2>Thank you for signing my guestbook</h2>";    
print "<p>Name: ".$_POST['name'];
print "</p><p>Email: ".$_POST['email'];    
print "</p><p>Comment: ".$_POST['myComments'];
print "</p><br />"; //Extra line break.

print "<em>Today is "  . date('F jS, Y.')."</em><br />"; //Extra line break. 
} //end confirm

function printForm() 
{
global $errors;
$place = $_POST[place];
// My old code I am trying to combine
print <<< HERE
 <h1>Please sign my guestbook.</h1>
 <form method="POST" action="{$_SERVER['PHP_SELF']}"> 
 <table> 
 <tr>
 <td class=name </td>Name: <br />
 <td><input type="text" name="name" id="name" value="{$_POST['name']}">
 {$errors['name']}</td>
 </tr>

 <tr>
 <td class=email</td>Email: <br />
 <td><input type="text" name="email" id="email" value"{$_POST['email']}">
 {$errors['email']}</td>
 </tr>  

 <tr>
 <td class=myComments</td>Comments:<br />
 <td><textarea type="text" name="myComments" id="mycomments" rows="4" cols="40" value"                 {$_POST['myComments']}">
 {$errors['myComments']}</textarea></td>
 </tr>

 <tr>
 <td>&nbsp;</td>
 <td><input type=submit name="submit" value="send"><input type="reset" name="clear" value=Clear>  </td>
 </tr>

 </table>
 </form>

 <br>
HERE;
 print "Today is "  . date('F jS, Y.')."<br>"; //Date printed in page below form.
 print "Form designed by Kevin O'Leary "."<br>"; //Date printed in page below form.
}
?>
</body>
</html>
4

1 に答える 1

0

TextArea にはvalueortype属性がありません (たとえあったとしても、値の後に等号はありません)。TextArea と /TextArea の間にスペース (改行、スペース、タブなど) があると表示されるため、開始タグと終了タグの間に改行を入れないでください。

おそらく、TextArea マークアップを次のように表示する必要があります。

<textarea name="myComments" id="mycomments" rows="4" cols="40">{$_POST['myComments']}</textarea> {$errors['myComments']}

これにより、$_POST['myComments']が TextArea に表示され$errors['myComments']、テキストエリアの右側 (テキストエリアが広すぎて折り返される場合は下) に表示されます。

また、メール フィールドの値の後に等号がありません。

テキストエリアの使用法について詳しくは、こちらをご覧ください: https://developer.mozilla.org/en-US/docs/HTML/HTML_Elements/textarea

于 2013-03-06T21:37:24.897 に答える