0

我有一个评论窗口,它在一个小的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

4

1 回答 1

0

我不是 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>
于 2009-08-28T11:22:09.760 回答