1

検証を可能にする連絡フォームを作成しようとする前に、この質問をしました(入力されていないか、間違って入力された場合にエラーが表示されます) - https://stackoverflow.com/questions/16331369/creating-a-contact-form-which -未記入時のエラー表示

終了関数は機能する必要はありません (つまり、送信する必要はありませんが、これが 100% 機能するのは良いことです)。これは、このテンプレートを作成しているためですが、検証とメッセージが来るようにしたいからです。間違って入力された場合はアップします。見て、私が間違っていたことを確認してください。事前に感謝します。

私のHTMLコード:

<div class="hr dotted clearfix">&nbsp;</div>
            <!-- Contact Form -->
            <form action='index.html' method='post' id='contact_form'>
                    <h3>Contact Form</h3>
                <div class="hr dotted clearfix">&nbsp;</div>
                <ul>                        
                    <li class="clearfix"> 
                        <label for="name">Name</label>
                        <input type='text' name='name' id='name' />
                        <div class="clear"></div>
                        <p id='name_error' class='error'>Insert a Name</p>
                    </li> 
                    <li class="clearfix"> 
                        <label for="email">Email Address</label>
                        <input type='text' name='email' id='email' />
                        <div class="clear"></div>
                        <p id='email_error' class='error'>Enter a valid email address</p>
                    </li> 
                    <li class="clearfix"> 
                        <label for="subject">Subject</label>
                        <input type='text' name='subject' id='subject' />
                        <div class="clear"></div>
                        <p id='subject_error' class='error'>Enter a message subject</p>
                    </li> 
                    <li class="clearfix"> 
                        <label for="message">Message</label>
                        <textarea name='message' id='message' rows="30" cols="30"></textarea>
                        <div class="clear"></div>
                        <p id='message_error' class='error'>Enter a message</p>
                    </li> 
                    <li class="clearfix"> 

                    <p id='mail_success' class='success'>Thank you. I'll get back to you as soon as possible.</p>
                    <p id='mail_fail' class='error'>Sorry, an error has occured. Please try again later.</p>
                    <div id="button">
                    <input type='submit' id='send_message' class="button" value='Submit' />
                    </div>
                    </li> 
                </ul> 
            </form>  
        </div>

そして、ここにJavaScriptの私のコードがあります:

$(document).ready(function(){
            $('#send_message').click(function(e){


                e.preventDefault();

                var error = false;
                var name = $('#name').val();
                var email = $('#email').val();
                var subject = $('#subject').val();
                var message = $('#message').val();


                if(name.length == 0){
                    var error = true;
                    $('#name_error').fadeIn(500);
                }else{
                    $('#name_error').fadeOut(500);
                }
                if(email.length == 0 || email.indexOf('@') == '-1'){
                    var error = true;
                    $('#email_error').fadeIn(500);
                }else{
                    $('#email_error').fadeOut(500);
                }
                if(subject.length == 0){
                    var error = true;
                    $('#subject_error').fadeIn(500);
                }else{
                    $('#subject_error').fadeOut(500);
                }
                if(message.length == 0){
                    var error = true;
                    $('#message_error').fadeIn(500);
                }else{
                    $('#message_error').fadeOut(500);
                }


                if(error == false){

                    $('#send_message').attr({'disabled' : 'true', 'value' : 'Sending...' });


                    $.post("send_email.php", $("#contact_form").serialize(),function(result){

                        if(result == 'sent'){

                             $('#button').remove();

                            $('#mail_success').fadeIn(500);
                        }else{

                            $('#mail_fail').fadeIn(500);

                            $('#send_message').removeAttr('disabled').attr('value', 'Submit');
                        }
                    });
                }
            });    
        });

CSS の一部:

p.error                             {margin-left:140px; margin-top:10px;}
    #contact_form ul                    {float:left;}
    #contact_form ul li                 {margin:10px 0; list-style:none; position:relative; clear:both;}
    #contact_form label                 {line-height:35px; width:100px; text-align:right; float:left; margin-right:10px;}
    #contact_form input#name,
    #contact_form input#email,
    #contact_form input#subject,
    #contact_form textarea              {float:left; padding:8px; border:1px solid #CCCCCC; margin-left:10px; background:#fcfcfc; -moz-border-radius:5px; -webkit-border-radius:5px;}
    #contact_form input#name,
    #contact_form input#email,
    #contact_form input#subject         {width:400px;}
    #contact_form textarea              {width:500px;height:150px; resize: none;}
    #contact_form input.button          {float:right;}
4

5 に答える 5

1

私は検証のために私のウェブサイトでこのようなことをしました:

  1. チェックしたい要素のIDの名前を「1」、「2」、「3」などに変更します。
  2. 表示するエラー メッセージの ID を「1a」、「2a」、「3a」などに変更します。

それから私はこのようなことをしました:

function validate()
{
   for(i = 1; i< totalelements; i++)
   {
      if(document.getElementById(i).length >= 0 )
      {
         $("#" + i + "a").fadeIn(500);
      }

      else
      {
         $("#" + i + "a").fadeOut(500);
      }
   }
}

あとは、機能をどこかに割り当てるだけです (ボタン、キーアップ/ダウンなど)。

お役に立てれば。

于 2013-05-02T07:35:00.243 に答える
1

変数errorを数回宣言しています。この jsbinでは、修正されたコードがあり、問題なく動作します。

編集 1: あなたのコメントについては、コードを更新しました。これで、エラーは最初に表示されなくなりました。

編集 2: 「これのテンプレートを作成しているため」 — その場合、コードをより抽象化するか、フォームの検証にライブラリを使用することをお勧めします。

于 2013-05-02T07:42:48.240 に答える
0

あなたはただ試してみてください

input type='button' id='send_message' class="button" value='Submit' />

それ以外の

input type='submit' id='send_message' class="button" value='Submit' />

于 2013-05-02T07:33:01.167 に答える
0

この jQuery 検証プラグインを使用してください - http://docs.jquery.com/Plugins/validation

これは非常に強力な検証プラグインです。これをお問い合わせフォームに適用するのに 10 秒しかかかりません。これも私のお気に入りです。

于 2013-05-02T07:33:19.633 に答える
0

必須フィールド用に HTML5 に追加されたキーワードがあります。

<input type="text" name="username" required>

ただし、これはクロスブラウザーではないため、そのような場合、最善のアプローチは jquery プラグインになる可能性があります。

于 2013-05-02T07:43:29.697 に答える