【问题标题】:How to submit a form using jquery dialog button?如何使用 jquery 对话框按钮提交表单?
【发布时间】:2026-02-26 12:00:01
【问题描述】:

大家好,只是想问一下如何使用 jquery 对话框按钮处理表单提交。在我的代码中,我有一个按钮,当您单击时。它将在对话框中弹出一个表单。下面是确定和取消的 jquery 按钮。我的问题是我无法提交我的表单唯一的选择是在我的表单中创建一个提交按钮。但我想改用 jquery 按钮。我正在使用 CodeIgniter,希望你能帮助我。

我的观点 (showAllSuppliers.php)

 /* FOR ADD PAGE */    
    $(".hero-unit input[name=add_supplier]").on('click',function(){
        $('#popup').load("<?php echo site_url("supplier_controller/addNewSupplier/"); ?>").dialog({
            title: "Add New Supplier",
            autoOpen: true,
            width: 800,
            modal:true,
            position: "center",
            buttons: {
                OK: function(){
                     $("#addSupplier").submit(); //HOW CAN I SUBMIT MY FORM USING THIS?
                },
                CANCEL: function() {
                    $(this).dialog( "close" );
                }
            }
        });
    });

我的表单(addNewSupplier.php)

<?php
$attr = array('id'=>'addSupplier');
echo form_open('supplier_controller/insertNewSupplier');  
..
.. 
..
... MY TEXTBOX FIELDS HERE
..
..
//echo "<input type='submit' value='ADD' />"; ANOTHER OPTION FOR SUBMISSION
echo form_close();
?>

我的控制器功能(supplier_controller.php)

 public function insertNewSupplier(){

        $this->supplier_model->insertNewSupplierDetail();
        redirect('supplier_controller/index','refresh');

 }

【问题讨论】:

  • $('#formId').submit();
  • 我试过了。这就是我所做的OK: function(){ $("#addSupplier").submit(); //HOW CAN I SUBMIT MY FORM USING THIS? },
  • 它也没有提交我的表单。
  • 这是一个 jquery ui 对话框吗?
  • 是的。我包括了一个确定和取消按钮

标签: php javascript jquery ajax codeigniter


【解决方案1】:

只需更改此行和您通常的 js 即可尝试:

$attr = array('id'=>'addSupplier');
echo form_open('supplier_controller/insertNewSupplier', $attr);

如果仍然没有提交表单,则尝试通过ajax调用提交。

$(".hero-unit input[name=add_supplier]").on('click',function(){
    $('#popup').load("<?php echo site_url("supplier_controller/addNewSupplier/"); ?>").dialog({
        title: "Add New Supplier",
        autoOpen: true,
        width: 800,
        modal:true,
        position: "center",
        buttons: {
            OK: function(){
                 $.ajax({
                    url     : '<?=base_url()?>supplier_controller/insertNewSupplier',
                    type    : 'POST',
                    data    : $("#addSupplier").serializeArray(),
                    success : function(resp){
                        alert("Submitted !!!");
                        $(this).dialog( "close" );
                    },
                    error   : function(resp){
                        //alert(JSON.stringify(resp));
                    }
                 });
            },
            CANCEL: function() {
                $(this).dialog( "close" );
            }
        }
    });
});

【讨论】:

  • 我做到了。在我填写完字段并单击“确定”按钮后,会弹出一个警报,但表单不会转到我的控制器。
  • 它提醒了什么?
  • 将此行:data : $("#addSupplier").serializeArray(), 更改为 data : {'data' : $("#addSupplier").serializeArray()}, 并将此 alert("Submitted !!!"); 更改为 alert("Submitted !!!"+resp);。在您的控制器上,在第一行写上print_r($_POST);die;。告诉我它发出的警报。
  • 当我点击 OK 按钮时,会出现一个弹出窗口,显示单词 Submitted 和一组数组。
  • 是的。现在您只需在模型中传递该数组并编写插入代码。而已。您的表格已提交! :D
【解决方案2】:

你需要ajax调用

$('#submit').click(function (){
        var first_name = $('#first_name').val();
        $.ajax({
            url : '/supplier_controller/insertNewSupplier,
            type : 'post',
                    data : first_name,
            success : function(){
                        //do something;
                        console.log(first_name);
                    }           
                })
                    return false;
            });

如果您将 id 广告添加到提交按钮和您的输入,这将起作用。但您也可以通过 html 标签调用它们。这只是对您的一个想法或示例。

【讨论】:

  • 前面的例子只适用于提交按钮。有没有办法如何获取 jquery ui 对话框按钮的按钮 ID?
【解决方案3】:

如果您想使用经典的表单提交而不是 ajax 调用,请为 buttons 参数编写以下代码行:

buttons: {
            OK: function(){
                 $(this).dialog().find('form').submit();
            },
            CANCEL: function() {
                $(this).dialog( "close" );
            }
        }

【讨论】: