【问题标题】:Codeigniter change form action by clicking buttonsCodeigniter 通过单击按钮更改表单操作
【发布时间】:2012-07-04 10:28:03
【问题描述】:

我的表单中有 2 个提交按钮,我试图让每个按钮都使用不同的控制器方法。我尽量不避免使用多种形式。

我正在使用

<button type="submit" onclick="javascript: form.action='restore'">Restore</button>
<button type="submit" onclick="javascript: form.action='delete'">Delete</button>

...这行得通,但我不确定这是否是最好的方法。有什么想法吗?

【问题讨论】:

    标签: php javascript html forms codeigniter


    【解决方案1】:

    这个怎么样?

    <?php echo form_open('controller/method',array('id'=>'my_form')); ?>
    <!--Form-->
    <input type="submit" value="Submit" />
    <?php echo form_close();?>
    

    希望对你有帮助

    【讨论】:

    • 谢谢,但我如何通过按下提交按钮来填充my_form
    • my_form 只是表单的 id。你必须把输入放在我写 的地方。例如:
    • 嗯...我需要更改表单操作 url,method。每个按钮都应该改变表单动作。您只是在更改 id 选择器,不是吗?我错过了什么吗?
    【解决方案2】:

    最好使用 javascript,毕竟它是在页面呈现后完成的。这是一个替代解决方案(对不起,它是 jQuery,我不太擅长 vanilla JS)。

    查看:

    <div id="submit-buttons" action="<?php echo site_url('controller/postmethod1'); ?>​"​​​​​>Submit 1</div>
    
    <div id="submit-buttons" action="<?php echo site_url('controller/postmethod2'); ?>">Submit 2</div>​
    

    JS:

    ​$(function(){
        $('.submit-buttons').click(function(){
            $('form').attr('action',$(this).attr('action')).submit();
            return false;
        });
    
    });​
    

    所以当按钮被点击后,它会从提交按钮的action属性中更新表单动作参数,然后立即提交表单。

    P.s:我没有测试它,但它应该可以工作。

    【讨论】:

      【解决方案3】:

      通常我想通过给按钮/输入标签一个名称 attr 来处理多个提交。通过这种方式,您可以在同一个控制器中提交和调用一个功能/动作,只需检查提交了哪个按钮。 例如:

      <form id="your_form" action="your_controller/process" method="post">
      <input type="submit" name="restore" id="restore" value="Restore" />
      <input type="submit" name="delete"  id="delete" value="Delete" />
      </form>
      

      然后在您的控制器中,将有一个名为“进程”的函数执行此操作:

      function process(){
        if(isset($_POST["restore"])) {
          //do your restore code
        }
      
        if(isset($_POST["delete"])){
          //do your delete code
        }   
      }
      

      希望这会有所帮助。

      【讨论】:

      • 谢谢!这看起来是一个很好的选择,特别是如果你想避免使用 js。我没有意识到可以获取提交按钮的值。
      猜你喜欢
      • 2013-01-16
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多