只允许三个按钮中的一个提交Web表单

时间:2011-12-14 23:10:55

标签: javascript jquery ajax

如果我有类似的话:

<form method="post" id="customForm" action="">
    //stuff 

    <div id="copiar">
        <button class="button" href="#" id="btnAdd0">
            <span class="icon icon3">&nbsp;</span>
        </button>
        <button class="button" href="#" id="btnDel0">
            <span class="icon icon58">&nbsp;</span>
        </button>
        <button class="submeter">
            <span class="label">Send</span>
        </button>
    </div>  
    </form>

<script type="text/javascript">
    $(document).ready(function() {
        $("#customForm").submit(function() {
            var formdata = $("#customForm").serializeArray();
            $.ajax({
                url: "validation.php",
                type: "post",
                dataType: "json",
                data: formdata,
                success: function(data, data1) {
                   //stuff
            });
            return false;
        });
    });
</script>

目前,三个按钮发送表格。我的想法是只允许在此按钮中提交操作:

<button class="submeter">
    <span class="label">Send</span>
</button>

我已经尝试$("#customForm > #copiar > button.submeter").submit(function() { 但页面重新加载。所以不行。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

为了防止表单的默认行为,您必须使用preventDefault(),如下所示:

$(document).ready(function() {
    $("#customForm").submit(function(e) {
        e.preventDefault();
        var formdata = $("#customForm").serializeArray();
        $.ajax({
            url: "validation.php",
            type: "post",
            dataType: "json",
            data: formdata,
            success: function(data, data1) {
               //stuff
        });
    });
    $("#customForm button.submeter").click(function() {
        $("#customForm").submit();
    });
});

答案 1 :(得分:1)

具有href属性的前两个按钮元素的目的是什么?我怀疑你只是为了格式化/视觉原因而使用按钮而不是常规链接。

无论如何,只需将属性type =“submit”添加到最后一个按钮并删除您为此按钮定义的提交处理程序,它应该可以正常工作。

修改。你还需要调用preventDefault()方法来停止页面重新加载,正如phil klein所指出的

答案 2 :(得分:1)

您必须先停止其他按钮提交,然后再提交。此外,当您为选择器使用ID时,实际上不需要将其与另一个ID组合,例如#customForm&gt; #copiar“

试试这个:

$(document).ready(function() {
    $("#customForm").submit(function(e) {
        e.preventDefault();
        var formdata = $("#customForm").serializeArray();
        $.ajax({
            url: "validation.php",
            type: "post",
            dataType: "json",
            data: formdata,
            success: function(data, data1) {
               //stuff
            }
        });
    });
    $("#customForm button").click(function(e) {
        var me = $(this);
        e.preventDefault();

        if(me.hasClass("submeter")) $("#customForm").submit();
    });
});

正如已经指出的那样,你不需要/想要href =“#”