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')にバインドしているため、このコンテキストでは が参照されます。属性名がコメントの子要素を見つけます。要素の値を返します。reportFormfind("[name='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 に答える