0

特定の方法で検証する必要がある HTML お問い合わせフォームがあります。

フィールドが入力されていない場合に JavaScript でユーザーに警告する代わりに、空のフィールドの下に「フィールドが必要です」という単語を表示することを好みます。

ここに私の連絡先フォームがありcontact.htmlます:

<form id = "myForm" action="contact.php" method="post">

<label for="name">Name:</label>
<input type="text" name="name" id="name" value="" tabindex="1" />


<label for="name">Email:</label>
<input type="text" name="email" id="email" value="" tabindex="1" />


<input type="submit" value="Submit" class="button" />
</form>

これが私のPHPフォームですcontact.php(検証以外はすべて省略されています):

//Validation... I am building up an error message string to alert the user at the end (omitted) 

$errormessage = '';

if(!isset($_POST['name']) || strlen($_POST['name']) < 1){
$errormessage .= 'You have not entered your Name\n';
}

if(!isset($_POST['email']) || strlen($_POST['email']) < 1){
$errormessage .= 'You have not entered your Email Address\n';
}

if($errormessage != ''){ ?>

<script language="javascript" type="text/javascript">
    alert('<?php echo "$errormessage" ?>');
    window.location = 'contact.html';
</script>

<?php } 


else {

$mail_to = 'info@email.co.uk';
$subject = 'Message from a site visitor '.$field_name;

$body_message = 'From: '.$field_name."\n\n";
$body_message .= 'E-mail: '.$field_email."\n\n";



$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

}

ご覧のとおり、現在の検証では、PHP で文字列が作成され、最後にユーザーに警告されます (省略)。ただし、このメソッドを、HTML フィールドの下に「Field Required」という文字列を表示することで置き換えたいと考えています。空のまま。

4

2 に答える 2

2

一部の html5 機能を使用しても問題ない場合の別のオプションは、入力に必須属性を設定することです。

必要

この属性は、ユーザーがフォームを送信する前に値を入力する必要があることを指定します。type 属性が hidden、image、またはボタン タイプ (送信、リセット、またはボタン) の場合は使用できません。:optional および :required CSS 疑似クラスは、必要に応じてフィールドに適用されます。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Inputから取得

したがって、html は次のようになります。

<form id = "myForm" action="contact.php" method="post">

<label for="name">Name:</label>
<input type="text" name="name" id="name" value="" tabindex="1" required />


<label for="name">Email:</label>
<input type="text" name="email" id="email" value="" tabindex="1" required />


<input type="submit" value="Submit" class="button" />
</form>
于 2013-08-30T15:06:41.083 に答える
1

私はあなたのアプローチから逸脱することなくあなたの質問に答えたかった.

contact.html を php で解析できる場合、または単に contactform.php に変更した場合は、クエリ文字列を送信して、どのフィールドにエラーがあり、その下にメッセージを表示することができます。

contactform.php

<form id = "myForm" action="contact.php" method="post">

<label for="name">Name:</label>
<input type="text" name="name" id="name" value="" tabindex="1" />
<?php if (isset($_GET['name']) && $_GET['name'] == 1) { 
    echo '<br/>This field is required.'; 
} ?>


<label for="name">Email:</label>
<input type="text" name="email" id="email" value="" tabindex="1" />
<?php if (isset($_GET['email']) && $_GET['email'] == 1) { 
    echo '<br/>This field is required.'; 
} ?>

contact.php

$error = FALSE;

$errors = array();

if(!isset($_POST['name']) || strlen($_POST['name']) < 1){
    $error = TRUE;
    $errors[] = 'name=1';
}

if(!isset($_POST['email']) || strlen($_POST['email']) < 1){
    $error = TRUE;
    $errors[] = 'email=1';
}

$geterrors = (count($errors) > 1 ? implode('&',$errors) : $errors[0]);

if($error){ ?>

<script language="javascript" type="text/javascript">
    window.location = 'contactform.php?<?php echo $geterrors; ?>';
</script>

...
于 2013-08-30T15:55:58.493 に答える