页面上多个表单的ajax验证,都具有相同的类

时间:2013-09-09 21:41:28

标签: php javascript jquery ajax validation

基本上我正在制作一个CMS,并希望进行后期编辑。

它的工作原理是博客帖子被回显(PHP),并且有一个隐藏的ckeditor,当点击一个编辑按钮时会显示。然后用编辑按钮替换保存按钮。

这一切都运行良好,但保存博客文章时会出现问题。

php工作正常,ajax验证工作正常,但只有1篇博客文章。

如果有超过1个帖子,则会出现错误。问题是,似乎保存帖子按钮正在发送每篇博文中的所有数据。我用firebug网查看了它,看到所有数据都被发送了。

我只需要一种方法来使表单中的保存按钮只影响该表单内的数据。目前,所有人都显示错误/成功消息。

以下是回复的帖子:

<div class="blogtest">

    <form action="process/updatepost.php" class="updatepost" method="post">
        <input type="button" class='.$editenabled.' value="Edit">
        <input type="submit" class="saveupdatebutton" value="Save">
        <input type="hidden" class="postid" name="postid" value="'.$postID.'">

        <div class="text">

            <div class="buildtext">'.$text.'</div>

            <div class="editor"><textarea name="ckeditor" class="ckeditor">'.$text.'</textarea></div>

        </div>

    </form>

    </div>

这是javascript:

(文档)$。就绪(函数(){     $( “updatepost”)。提交(函数(){

    $(".error").remove();
    $(".success").remove();

    // If there is anything wrong with 
    // validation we set the check to false
    var check = true;

    // Get the value of the blog update post
    var blogpost = $('.ckeditor').val();

    // Validation
    if (blogpost == '') {
        check = false;
       $('.ckeditor').after('<div class="error">Text Is Required</div>');
    }

  // ... goes after Validation
    if (check == true) {
$.ajax({
type: "POST",
url: "process/updatepost.php",
data: $(".updatepost").serialize(),
dataType: "json",
success: function(response){

    if (response.databaseSuccess)
       $('.ckeditor').after('<div class="success">Post Updated</div>');
    else
       $('.ckeditor').after('<div class="error">Something went wrong!</div>');

}
        });
    }
    return false;
});

});

感谢阅读。希望你能帮忙。

1 个答案:

答案 0 :(得分:1)

您只需将验证逻辑限制为实际提交的表单即可。现在$('.ckeditor').after('<div class="error">Text Is Required</div>');正在修改与ckeditor类名匹配的所有项。见下文 - 我添加了一个名为$ targetForm的变量,该变量抓取正在提交的表单并适当修改代码以仅引用该表单的子代。

$(document).ready( function() { 
    $(".updatepost").submit(function() {
        var $targetForm = $(this);

        $targetForm.find(".error").remove();
        $targetForm.find(".success").remove();

        // If there is anything wrong with 
        // validation we set the check to false
        var check = true;

        // Get the value of the blog update post
        var $ckEditor = $targetForm.find('.ckeditor'),
            blogpost = $ckeditor.val();

        // Validation
        if (blogpost == '') {
            check = false;
            $ckeditor.after('<div class="error">Text Is Required</div>');
        }

        // ... goes after Validation
        if (check == true) {
            $.ajax({
                type: "POST",
                url: "process/updatepost.php",
                data: $targetForm.serialize(),
                dataType: "json",
                success: function(response){

                    if (response.databaseSuccess)
                        $ckeditor.after('<div class="success">Post Updated</div>');
                    else
                        $ckeditor.after('<div class="error">Something went wrong!</div>');

                }
            });
        }

        return false;
    });
});