Jquery UI:使用submit方法提交特定表单

时间:2012-01-23 08:44:32

标签: jquery jquery-ui jquery-ui-dialog

我有一个关于Jquery ui对话框的问题。

我有/我做了什么:我有多种形式(取决于从mysql结果返回的结果)。表格如下:

<form action="?" method="POST" id="form1">

    <input type="text" name="title"/>

     .................................
      other inputs
     .................................

     <input type="submit" class="delete" id="delete" name="delete" value="delete"/>

</form>

相同的表单,但只有表单的id为'form2',或取决于查询(form3,form4等....)

jquery代码

$(document).ready(function(){

                var $dialog = $('<div></div>').html('<span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>Do you really want to delete it?')

                .dialog({

                            autoOpen:false,

                            resizable: false,

                            height:140,

                            modal: true,

                            title:'Confirm delete',

                            buttons: {

                                "Yes": function(){

                                *********************************       
                                document.forms["form1"].submit();
                                *********************************

                                $(this).dialog("close");   

                                },

                                "No": function(){

                                    $(this).dialog("close");

                                }

                            }

                });

                $('#delete').click(function(){

                            $dialog.dialog('open');

                            return false;

                });

    });

我想达到什么目标? 我想仅针对删除按钮所在的表单触发提交操作。我的意思是,如果用户单击form1上的删除按钮,则只应提交form1。我在Jquery代码中用星星突出显示了一行。 在该特定行上,当用户点击删除按钮时,应检索相应表单或表单索引的ID(删除按钮所属的)并仅提交该特定表单。

我面临的问题: 我可以硬编码表单ID,但我无法确切地知道表单的数量,因为它取决于搜索词。所以我试图动态检索它。有可能吗?

P.S。在删除按钮单击事件上,如果我选择$('#delete'),它只适用于一个表单。如果我使用$('。delete'),它是提交所有表格还是可能过度写作? (我猜是因为在做var_dump($ _ POST)时它返回一个空数组)

任何帮助将不胜感激。如果需要更多信息,我可以提供。

3 个答案:

答案 0 :(得分:0)

愿这会帮到你

$(this).parent('form').attr('name')
$(this).parent('form').serialize() 
$('.delete').click(function(){

   alert($(this).parent('form').attr('name'));
   alert($(this).parent('form').serialize());

});

谢谢

答案 1 :(得分:0)

@itachi

你不能给多个元素赋予相同的id。 更改您的代码如下

$('.delete').click(function(e){
    e.preventDefault();  
    currentForm = $(this).parent('form').get(0);
    $dialog.dialog('open');
    return false;
});

buttons: {

    "Yes": function(){
        if(currentForm){
            currentForm.submit();
        }
        $(this).dialog("close");   
    },
    "No": function(){
        $(this).dialog("close");
    }
}

您可以查看正在运行的演示here

答案 2 :(得分:0)

该功能可以

<script>
function submitform(formname){
$(document).ready(function() {
    $(("#"+formname)).submit(function() {
        $.post('page.php', $(this).serialize(), function(data) {
            $("#cart").append(data);
        });
        return false;
    });
}); 
}
</script>

表单提交按钮
您可以在渲染表单时提供表单名称

<button class="large-6 columns" type="submit" onclick="javascript:submitform('formname')">Select</button>