2

フォームが正常に送信されたときに、フォームの「送信」ボタンを非表示にしたいと思います。$('#submit').hide(2000);直後 に追加しようとしました$('.success').fadeIn(1000); が、成功しませんでした。ありがとう

HTML:

<div class="block-right">  <h1>Formulaire de contact</h1>
            <!-- CONTACT FORM-->
            <div class="contact-form">


                <form id="contactfrm" method="post" class="clearfix">
                    <div class="clearfix">
                        <input id="name" name="name" placeholder="Name" type="text" value="">
                        <input id="email" name="email" placeholder="Email" type="email" value="">
                    </div>

                    <textarea id="message" name="message" placeholder="Message"></textarea>

                    <input type="submit" value="Envoyer" name="submit">

  <p class="success" style="display:none">Your message has been sent successfully.</p>
  <p class="error" style="display:none">E-mail must be valid and message must be longer than 100 characters.</p>
                </form>
            </div><!-- /.contact-form -->
</div>  <!-- End DIV block-right -->

JS:

// Contact Form
$(document).ready(function(){
  $("#contactfrm").submit(function(e){
     e.preventDefault();
  var name = $("#name").val();
  var email = $("#email").val();
  var message = $("#message").val();
  var dataString = 'name=' + name + '&email=' + email + '&message=' + message;
  function isValidEmail(emailAddress) {
    var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
    return pattern.test(emailAddress);
  };

  if (isValidEmail(email) && (message.length > 10) && (name.length > 1)){
    $.ajax({
    type: "POST",
    url: "sendmessage.php",
    data: dataString,
    success: function(){
      $('.success').fadeIn(1000);
    }
    });
  } else{
    $('.error').fadeIn(1000);
  }

  return false;
});
});
4

3 に答える 3

1

ajax 成功関数が起動されたら、ボタンを非表示にします。

$this.find('input:submit').hide();

あなたのコードは

$(document).ready(function () {
    $("#contactfrm").submit(function (e) {
        var $this =$(this);//added this code here
        e.preventDefault();
        var name = $("#name").val();
        var email = $("#email").val();
        var message = $("#message").val();
        var dataString = 'name=' + name + '&email=' + email + '&message=' + message;

        function isValidEmail(emailAddress) {
            var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
            return pattern.test(emailAddress);
        };

        if (isValidEmail(email) && (message.length > 10) && (name.length > 1)) {
            $.ajax({
                type: "POST",
                url: "sendmessage.php",
                data: dataString,
                success: function () {
                    $('.success').fadeIn(1000);
                    $this.find('input:submit').hide();//added this code here
                }
            });
        } else {
            $('.error').fadeIn(1000);
        }

        return false;
    });
});

参考文献

http://api.jquery.com/hide/

http://api.jquery.com/find/

于 2013-09-28T14:45:30.217 に答える
1

変化する

  <input type="submit" value="Envoyer" name="submit">

    <input type="submit" value="Envoyer"  id="submit" name="submit">
于 2013-09-28T14:52:50.140 に答える
0

これを試して:

success: function(){
      $('.success').fadeIn(1000);
      $('input[name="submit"]').hide();
    }

ただし、送信の html を次のように変更することをお勧めします。

<input type="submit" value="Envoyer" name="submit" id="submit">

このコードを使用すると、フォームの送信のみを非表示にできます。

success: function(){
          $('.success').fadeIn(1000);
          $('#submit').hide();
        }
于 2013-09-28T14:45:40.233 に答える