当前位置: 首页 > 知识库问答 >
问题:

在表单验证和提交后禁用“提交”按钮。PHP,JQ?

南门承教
2023-03-14

我有一个来自WordPress的contact-template.php文件...

表单有4个必填字段...

现在,如果任何或所有必填字段为空,表单将不会提交,用户将在每个为空的文本输入字段下面得到“此字段是必填的”消息。-这完全是我想要的

我遇到的问题是,当填写所需的字段,并点击“提交”按钮时,会有10-15秒的停顿,然后显示“谢谢你,我们会尽快回复你”的消息。

由于这种暂停,用户会多次单击submit按钮,并且每次单击都会发送一封重复的电子邮件。

我尝试使用“onclick=”this.disabled=true;this.value='发送,请稍候...“,但这跳过了输入字段验证,不允许发送消息。

我希望此按钮禁用并显示“正在发送,请稍候...”文本,但它需要验证文本输入字段并最终提交/发送电子邮件消息

请救命!!!

这是密码...

<?php /* Template Name: Contact Form */ ?>


<?php get_header(); ?>
<div id="top-div"></div>

<div id="container">
<div id="inner-headline">
    <h2> 
        <?php 
            $headline = get_post_meta($post->ID, "_headline", $single = false);
            if(!empty($headline[0]) )
            {
                echo $headline[0];
            }
            else
            {
                the_title();
            }
        ?>
    </h2>
</div>
<div id="content">      
    <div id="content-inner">
        <div class="sideright-left-col">

            <?php if (have_posts()) : ?>

                <?php while (have_posts()) : the_post(); ?>

                 <?php the_content(); ?>

                    <?php if(isset($hasError) || isset($captchaError)): 
?>
                        <p class="error"><?php _e('There was an error 
submitting the form.', 'Sona')?><p>
                    <?php endif ?>
                    <div id="status"></div>
                    <form action="" id="contact-form" method="post">

                        <div class="name">
                            <label for="contactName"><span style="color: 
red;">*&nbsp</span><?php _e( 'Name', 'Sona' ); ?>:</label>
                            <input type="text" name="contactName" 
id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" 
class="requiredField txt"/>

                            <?php if(isset($nameError) && $nameError != ''): ?>
<span class="error"><?php echo $nameError;?></span><?php endif;?>

                            <div class="clear"></div>
                        </div>
                        <div class="email">
                            <label for="email"><span style="color: 
red;">*&nbsp</span><?php _e( 'E-mail', 'Sona' ); ?>:</label>
                            <input type="text" name="email" id="email" value="<?php 
if(isset($_POST['email'])) echo $_POST['email'];?>" class="requiredField email txt" />

                            <?php if(isset($emailError) && 
$emailError != ''): ?><span class="error"><?php echo $emailError;?></span><?php endif;?>

                            <div class="clear"></div>
                        </div>
                        <div class="subject">
                            <label for="subject"><span style="color: 
red;">*&nbsp</span><?php _e( 'Subject', 'Sona' ); ?>:</label>
                            <input type="text" name="subject" id="subject" value="<?
php if(isset($_POST['subject'])) echo $_POST['subject'];?>" class="requiredField txt"/>

                            <?php if(isset($subjectError) && $subjectError != ''): ?
><span class="error"><?php echo $subjectError;?></span><?php endif;?>

                            <div class="clear"></div>
                        </div>
                        <div class="clear"></div>
                        <div class="message">
                            <label for="message"><span style="color: 
red;">*&nbsp</span><?php _e( 'Message', 'Sona' ); ?>:</label>
                            <textarea name="message" cols="100" rows="200" 
id="message" class="txt requiredField"><?php echo isset($_POST['message']) && 
$_POST['message']!=''  
?  stripslashes($_POST['message'])  : ''?></textarea>

                            <?php if(isset($messageError) && 
$messageError != '') { ?><span class="error"><?php echo $messageError;?></span> <?php } ?>

                            <div class="clear"></div>
                        </div>
                        <div>
                            <?php 
                                $al_options = 
get_option('al_general_settings'); 
                                $options = array( 

$al_options['al_contact_error_message'], 

$al_options['al_contact_success_message'],

$al_options['al_subject'],

$al_options['al_email_address'],
                                                );
                            ?>
                            <input type="hidden" name = "options" value="<?php 
echo implode(',', $options) ?>" />
                            <input type="hidden" name="siteurl" value="<?php 
echo get_option('blogname')?>" />
                        <br />
                            <input type="submit" class="button white-back" 
value="Submit Message" tabindex="5" id="submit" name="send"/>

                             <div class="clear"></div>
                        </div>
                    </form>
                </div>
                <div class="sideright-right-col">
                    <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar("Contact 
Sidebar") ) : ?> <?php   endif;?>
                </div>  
                <div class="clear"></div>
            </div>
            </div>

       </div>
<!-- END CONTENT -->
</div>
<?php endwhile; ?>
<?php endif; ?>
<script type="text/javascript">

jQuery(document).ready(function(){
jQuery("#contact-form").validate({
submitHandler: function() {

    var postvalues =  jQuery("#contact-form").serialize();


    jQuery.ajax
     ({
       type: "POST",
       url: "<?php echo get_template_directory_uri() ?>/contact-form.php",
       data: postvalues,
       success: function(response)
       {
         jQuery("#status").addClass('success-
message').html(response).show('normal');
         jQuery('#contact-form :input.not("#send")').val("");
         jQuery('#contact-form :textarea').val("");
       }
     });
    return false;

},
focusInvalid: true,
focusCleanup: false,
rules: 
{
    contactName: {required: true},
    email: {required: true, minlength: 6,maxlength: 50, email:true},
    message: {required: true},
    subject: {required: true}
},

messages: 
{
    contactName: {required: "<?php _e( 'This field is required', 'Sona' ); ?>"},
    email: {required: "<?php _e( 'This field is required', 'Sona' ); ?>", email: "<?php         
_e( 'Please provide a valid e-mail address.', 'Sona' ); ?>"},
    message: {required: "<?php _e( 'This field is required', 'Sona' ); ?>"},
    subject: {required: "<?php _e( 'This field is required', 'Sona' ); ?>"} 
},

errorPlacement: function(error, element) 
{
    error.insertAfter(element);
},
invalidHandler: function()
{
    jQuery("body").animate({ scrollTop: 0 }, "slow");
}
});
});


</script>

<?php get_footer(); ?>   

共有1个答案

邢运良
2023-03-14

圣洁的耶稣母亲,请使用一个模板引擎,这只是恐怖的阅读。>.<

不管怎样,如果我没有在代码上犯错,您可以用jQuery这样禁用它...

$(document).ready(function(){
    $("input[type=submit]").click(function() {
        $("input[type=submit]").attr("disabled", "disabled");
    )};
}
 类似资料:
  • 问题内容: 单击后,我编写了以下代码以禁用网站上的提交按钮: 不幸的是,它没有发送表格。我怎样才能解决这个问题? 编辑 我想绑定提交,而不是表格:) 问题答案: 做到: 发生的事情是您实际上在完全触发该提交事件之前禁用了该按钮。 您可能还应该考虑使用ID或CLASS来命名元素,因此不要在页面上选择所有提交类型的输入。 (请注意,我使用,因此该表单在示例中并未实际提交;请在使用时将其保留。)

  • 本文向大家介绍yii form 表单提交之前JS在提交按钮的验证方法,包括了yii form 表单提交之前JS在提交按钮的验证方法的使用技巧和注意事项,需要的朋友参考一下  很多时候,需要对Yii表单model中的对象设置的rules进行判断,但是有的时候可能需要在提交之前就在客户端进行验证,我这边设置的方法是在提交按钮上设置监听器,如果部分内容为空(比如多选按钮没有选择),那么提示出错信息。主要

  • 问题内容: 我有一个看起来像这样的表格: 当我绑定到表单的Submit()时,似乎无法访问用户单击的图像。因此,我试图绑定到单击图像本身(),该图像总是提交表单,无论我是否尝试 返回false; event.stopPropogation(); 要么 event.preventDefault(); 因为所有这些都是表单事件。 我应该将$ .post()附加到form.submit()事件上吗,如果

  • 问题内容: 我有一个HTML表单,其中使用了几个按钮。问题是,无论我单击哪个按钮,即使该按钮的类型不是“ submit”,也将提交表单。例如:之类的按钮,导致表单提交。 为这些按钮中的每个按钮执行一次操作是非常痛苦的。 我使用jQuery和jQuery UI,并且网站使用HTML5。 有没有办法禁用这种自动行为? 问题答案: 像按钮 是 提交按钮。 设置以改变它。是默认值(由HTML建议指定)。

  • 问题内容: 我有这个HTML: 我该如何做这样的事情: 当文本字段为空时,应禁用提交(disabled =“ disabled”)。 在文本字段中键入内容以删除禁用的属性时。 如果文本字段再次变为空(删除了文本),则应再次禁用提交按钮。 我尝试过这样的事情: …但这不起作用。有任何想法吗? 问题答案: 问题在于,仅当焦点从输入移开(例如,有人单击输入或将选项卡移出输入)时,更改事件才会触发。尝试改

  • 问题内容: 我有以下代码,基本上它正在执行两个操作。第一个是将我的表单数据提交到google电子表格,另一个操作是将我的第二个表单文本框值数据提交到另一个页面文本框值。这个怎么做? 从上面可以看到,这是第一页,第二页是第二种形式的Sankranthi_Reserv2.asp。我想在那儿传递文本框值,所以问题是第一种形式是提交给Google文档并存储数据,但是第二种形式需要将手机号码文本框值传递给下