【问题标题】:jqmodal window closes on form submit for all browsers except FFjqmodal 窗口在提交表单时关闭除 FF 之外的所有浏览器
【发布时间】:2009-08-28 09:31:22
【问题描述】:

我有一个评论窗口,它在一个小的jqmodal 窗口中打开。我正在尝试使用 $.ajax 提交表单并在小模式窗口中显示“成功”。但在除 Firefox 之外的所有浏览器中,当我提交表单时,模式会关闭。

<script type="text/javascript">
$().ready(function() {

$('.reportForm').submit( function(){
    if (document.rForm.comment.value != "") {
        $('.reportForm').hide();

        $.ajax({
            type: "POST",
            url: "<?php echo $_SERVER["PHP_SELF"]; ?>?c=<?php echo $c; ?>",
            cache: false,
            data: "comment=" + document.rForm.comment.value,
            success: function(html){
                        $("#results").append(<?php echo get_option('ddrc_success'); ?> + " ");
                     }

        });
        return false;           
    } 

});
});

fs

【问题讨论】:

    标签: jquery ajax forms submit jqmodal


    【解决方案1】:

    我不是 100% 确定,但问题可能出在这一行:

    if (document.rForm.comment.value != "") {
    

    我不认为这段代码是跨浏览器的。假设 rForm.reportForm 中,您可以将其替换为

    if ($(this).find("[name='comment']").val()) {
    

    $(this) 在此上下文中将引用$('.reportForm'),因为您绑定到reportForm 的提交事件。 find("[name='comment']") 将定位一个属性名为 comment 的子元素。 val() 返回元素的值。

    此外,如果评论字段中没有值,则您编写此方法的方式将按正常方式提交。

    你应该考虑搬家

    return false;
    

    成为方法的最后一行。

    整个例子被重做:

    <script type="text/javascript">
        $(function() {
            $('.reportForm').submit(function() {
                if ($(this).find("[name='comment']").val()) {
                    $(this).hide();
    
                    $.ajax({
                        type: "POST",
                        url: "<?php echo $_SERVER["PHP_SELF"]; ?>?c=<?php echo $c; ?>",
                        cache: false,
                        data: "comment=" + $(this).find("[name='comment']").val(),
                        success: function(html) {
                            $("#results").append(<?php echo get_option('ddrc_success'); ?> + " ");
                        }
    
                    });
                } else {
                    alert("Please, fill the comment field");
                }
                return false;                   
            });
        });
    </script>
    

    【讨论】:

    • 感谢您的回复,但在其他浏览器中仍然无法使用。虽然仍然适用于FF。 “返回错误;”在那里是因为它应该阻止模态窗口关闭。我使用的代码基于此:jorenrapini.com/blog/css/… 还有其他想法吗?谢谢。
    猜你喜欢
    • 2018-04-19
    • 2012-07-21
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多