【问题标题】:Success / Error Messages on form Submit not showing表单提交上的成功/错误消息未显示
【发布时间】:2012-01-11 12:42:36
【问题描述】:

我有一个 php / ajax / javascript 表单,我正试图开始工作。在 John Fable 的大力帮助下,我只需要显示成功和错误消息即可。 在这里查看我们的线程: Putting multiple forms on the same page

我的表格位于: http://www.testing123.co.za/try/test-toggle.htm

我的目标是在一页上有多个表单,但是当您在任一表单上单击提交时,不会显示成功或错误消息,而是在提交按钮附近旋转加载 gif。

表单的 Javascript 如下所示:

 // JavaScript Document

jQuery(document).ready(function() {
    $('.contactform').submit(function() {
        var action = $(this).attr('action');
        $('.submit', this).attr('disabled', 'disabled').after('<img src="assets/ajax-
loader.gif" class="loader" />');
        $('.message', this).slideUp(750, function() {
            $('.message', this).hide();
            $.post(action, {
                name: $('.name', this).val(),
                email: $('.email', this).val(),
                phone: $('.phone', this).val(),
                dayin: $('.dayin', this).val(),
                dayout: $('.dayout', this).val(),
                comments: $('.comments', this).val(),
                verify: $('.verify', this).val()
            },
            function(data) {
                $('.message', this).html(data);
                $('.message', this).slideDown('slow');
                $('img.loader', this).fadeOut('fast', function() {
                    $(this).remove();
                });
                $('.submit', this).removeAttr('disabled');
                if (data.match('success') != null);
                $('.message', this).show().delay(5000).fadeOut();
            });
        });
        return false;
    });
});

HTML 表格:

<body>

<div id="container">

<div id="accommodation_listing_options_box">

 <ul id="accommodation_listing_options">

  <li>Price Range: <a href="#" class="tooltip" style="cursor:help;" title="Mid-range 
 Accommodation"><img src="../mid-range-yellow.png" width="28" height="19" 
 align="absmiddle" style="padding-left:0px;" /></a></li>

  <li><a href="#">View Comments</a> <img src="../comments_bubble_small.png" width="18" 
 height="16" align="absmiddle" style="padding-left:5px;" /></li>

</ul>

</div>

<div id="quick_enquiry_box">Make Quick Enquiry</div>

<div style="clear:both; width:710px;"></div>



<div style="clear:both;"></div>

<div id="slide_panel">

<div id="contact">

        <form method="post" action="contact.php" name="contactform" id="contactform" 
class="contactform"><div class="message"></div>

<div id="my_contact_left">



        <label for="name" accesskey="U"><span class="required">*</span>Name</label><br 
 />

        <input name="name" type="text" id="name" size="30" class="name" />

        <br />

        <label for="email" accesskey="E"><span class="required">*
  </span>Email</label><br />

        <input name="email" type="text" id="email" size="30" class="email" />

        <br />

        <label for="phone" accesskey="P"><span class="required">*</span>Phone:
 </label><br />

        <input name="phone" type="text" id="phone" size="30" class="phone" />

        <br />

        <label for="dayin" accesskey="P">Day in:</label><br />

        <input name="dayin" type="text" id="dayin" size="30" class="dayin" />

        <br />

        <label for="dayout" accesskey="P">Day out:</label><br />

        <input name="dayout" type="text" id="dayout" size="30" class="dayout" />

 </div>

<div id="my_contact_right">

        <label for="comments" accesskey="C"><span class="required">*</span>Your 
Comments</label><br />

        <textarea name="comments" cols="40" rows="3" id="comments" class="comments" 
style="width: 350px; height:100px;"></textarea>

        <p><span class="required">*</span>Type the validation code in below</p>

        <div style="width:100px; height:40px; float:left;"><label for="verify" 
accesskey="V">&nbsp;&nbsp;&nbsp;<img src="image.php" alt="Image verification" 
border="0"/></label></div>

        <div style="width:310px; height:40px; float:right;"><input name="verify" 
type="text" id="verify" class="verify" size="6" value="" style="width: 50px;" />

        <input type="submit" style="margin-left:112px;" class="submit" id="submit" 
value="Send it!" /></div>

        <div style="clear:both; width:410px;"></div>

</div>

<div style="clear:both; width:710px;"></div>

        </form>

</div>

<div id="quick_form_wrapper_close"><a href="#"><img src="../close-panel-button.gif" 
/></a>
</div>

</div>



<div id="accommodation_listing_options_box">

<ul id="accommodation_listing_options">

  <li>Price Range: <a href="#" class="tooltip" style="cursor:help;" title="Mid-range 
Accommodation"><img src="../mid-range-yellow.png" width="28" height="19" 
align="absmiddle" style="padding-left:0px;" /></a></li>

  <li><a href="#">View Comments</a> <img src="../comments_bubble_small.png" width="18" 
height="16" align="absmiddle" style="padding-left:5px;" /></li>

</ul>

</div>

<div id="quick_enquiry_box2">Make Quick Enquiry</div>

<div style="clear:both; width:710px;"></div>



<div style="clear:both;"></div>

<div id="slide_panel2">

<div id="contact">



        <form method="post" action="contact2.php" name="contactform" id="contactform" 
class="contactform"><div class="message"></div>

<div id="my_contact_left">



        <label for="name" accesskey="U"><span class="required">*</span>Name</label><br 
/>

        <input name="name" type="text" id="name" size="30" class="name" />

        <br />

        <label for="email" accesskey="E"><span class="required">*
</span>Email</label><br />

        <input name="email" type="text" id="email" size="30" class="email" />

        <br />

        <label for="phone" accesskey="P"><span class="required">*</span>Phone:
</label><br />

        <input name="phone" type="text" id="phone" size="30" class="phone" />

        <br />

        <label for="dayin" accesskey="P">Day in:</label><br />

        <input name="dayin" type="text" id="dayin" size="30" class="dayin" />

        <br />

        <label for="dayout" accesskey="P">Day out:</label><br />

        <input name="dayout" type="text" id="dayout" size="30" class="dayout" />

</div>

<div id="my_contact_right">

        <label for="comments" accesskey="C"><span class="required">*</span>Your 
Comments</label><br />

        <textarea name="comments" cols="40" rows="3" id="comments" class="comments" 
style="width: 350px; height:100px;"></textarea>

        <p><span class="required">*</span>Type the validation code in below</p>

        <div style="width:100px; height:40px; float:left;"><label for="verify" 
accesskey="V">&nbsp;&nbsp;&nbsp;<img src="image.php" alt="Image verification" 
border="0"/></label></div>

        <div style="width:310px; height:40px; float:right;"><input name="verify" 
type="text" id="verify" class="verify" size="6" value="" style="width: 50px;" />

        <input type="submit" style="margin-left:112px;" class="submit" id="submit" 
value="Send it!" /></div>

        <div style="clear:both; width:410px;"></div>

</div>

<div style="clear:both; width:710px;"></div>

        </form>

</div>

<div id="quick_form_wrapper_close2"><a href="#"><img src="../close-panel-button.gif" 
/></a>    </div>

</div>

</div>

</body>

成功/错误信息应该出现在div中:

&lt;div class="message"&gt;&lt;/div&gt; 可以在上面的html表单中看到。

任何想法为什么在提交时没有显示成功/错误消息?

提前致谢。

【问题讨论】:

  • 您的标记存在很多问题。我懒得读它的事实证明了这一点。很乱,到处都有访问行,使用内联样式,并且使用&lt;br&gt; 换行。所有这些都必须修复。漂亮整洁的代码让你在未来不再那么头疼。我也可以解决你的问题。
  • 我只是想同意@Truth - 你的 js 的格式很好,但是请你的 html ,一直,从现在开始。它使这些小错误更容易被发现 1000000% - 并且随机的互联网人将来会更倾向于为您检查它。编辑:实际上是对您的 JS 的一种批评 - 请在 if 语句上使用花括号。如果它是单衬则不是必需的,但同样可以让这些东西更容易被发现。
  • 同意,同时避免在不需要的地方放置无用的属性(尤其是 id,不要重复),并在任何可能的地方使用 CSS 进行样式设置。
  • @jammypeach 当然他的 JS 格式很好,我为他格式化了 :)。另外,看看这里:jsfiddle.net/AFnDY/1 是不是看起来好多了? (编码方面)
  • @Truth LMFAO 让我发痒:D

标签: php javascript html ajax forms


【解决方案1】:

试试这个(可能仍然不是 100% 正确):

jQuery(document).ready(function() {
    $('.contactform').submit(function() {
        var action = $(this).attr('action');
        var form = this;
        $('.submit', this).attr('disabled', 'disabled').after(
              '<img src="assets/ajax-loader.gif" class="loader" />');
        $('.message', this).slideUp(750, function() {
            $(this).hide();
            $.post(action, {
                name: $('.name', form).val(),
                email: $('.email', form).val(),
                phone: $('.phone', form).val(),
                dayin: $('.dayin', form).val(),
                dayout: $('.dayout', form).val(),
                comments: $('.comments', form).val(),
                verify: $('.verify', form).val()
            },
            function(data) {
                $('.message', form).html(data);
                $('.message', form).slideDown('slow');
                $('img.loader', form).fadeOut('fast', function() {
                    $(this).remove();
                });
                $('.submit', form).removeAttr('disabled');
                if (data.match('success') != null)
                $('.message', form).show().delay(5000).fadeOut();
            });
        });
        return false;
    });
});

【讨论】:

  • 很好看,我错过了:)
  • 你是说我需要多加一个分号还是去掉它?
  • 删除它:分号表示 if 的“then”部分为空。
  • 在你的 JS 中修复这一行:$('.submit', this).attr('disabled', 'disabled').after('&lt;img src="assets/ajax- loader.gif" class="loader" /&gt;');,它应该在一行上。
  • @DaleHughes 不会删除,而是更改上下文。检查我编辑的答案(尽管我刚刚发现了一个剩余的)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2021-06-27
  • 2021-06-07
  • 2015-10-17
相关资源
最近更新 更多