【问题标题】:Get 1 input field value to 2 different controllers by using 2 buttons使用 2 个按钮为 2 个不同的控制器获取 1 个输入字段值
【发布时间】:2016-04-19 23:00:16
【问题描述】:

我有一个<form>,它当前将输入字段数据发送到控制器中的 1 个函数。看起来像这样。

<?php echo form_open('moneyexchange/invest_first_page');  ?>
  <input  type="text" placeholder="Amount in &euro;"  name="writtenamount"/>
    <button class="btn btn-lg" type="submit" >Invest</button> 
    <button class="btn btn-lg" type="submit" >Borrow</button>
<?php echo form_close();?> 

问题是我需要 Invest 按钮才能进入货币兑换控制器内的invest_first_page 功能,而 Borrow 按钮才能进入同一个控制器内的不同功能,称为 borrow_first_page。我需要使用一个输入字段,这是必须的,所以不能使用两个输入字段,然后他们转到函数,他们被重定向到两个不同的页面,所以有没有办法让这个表单发布输入值当点击不同的按钮时到两个不同的控制器。

为了额外的信息,我在控制器中发布了按钮指向的两个功能。

    public function invest_first_page(){
$this->load->helper('form');
         $this->load->library('form_validation');
        $this->load->view('header');
        $userProvidedAmount = $this->input->post("writtenamount");
        $data =  array(
        'userProvidedAmount' => $userProvidedAmount
         );
        $this->load->view("invest_firstpage", $data);
        $this->load->view('footer');
                }

 public function borrow_first_page(){
        }

我可以用 JavaScript 来做吗?

【问题讨论】:

    标签: javascript forms codeigniter model-view-controller controller


    【解决方案1】:

    下面的例子

        <html>
    <head>
        <script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script>
            $( document ).ready(function() {
                $('#yourbuttonid').click(function() { 
                    $.ajax({
                         url: 'moneyexchange/invest_first_page',
                         type: 'POST',
                         data: { writtenamount: $("#amount").val()},
                         success: function (result) {
                           // do stuff
                         }
                    });
                });
            });
        </script>
    </head>
    <body>
        <?php echo form_open('moneyexchange/invest_first_page');  ?>
            <input  type="text" placeholder="Amount in &euro;"  name="writtenamount"/>
            <button id="yourbuttonid" class="btn btn-lg" type="submit" >Invest</button> 
            <button class="btn btn-lg" type="submit" >Borrow</button>
        <?php echo form_close();?>
    </body>
    </html>
    

    【讨论】:

    • 嘿,我试过你的代码,没用,我什至像这样添加了按钮 ID
    • 如何修复表单,我是否将 form_open 保留在那里?因为它重定向到一个特定的控制器
    • 在您的控制器中,您是否看到设置的值writtenamount?意思是调试的时候可见吗?
    • 我把我的控制器功能放在里面以便你看到它,当我调试时它甚至没有到达控制器
    • 在你的点击函数里面写 alert("clicked");屏幕上应该会出现一个消息框,这样行吗?
    【解决方案2】:

    Paul Rolas 代码是完美的,但您需要考虑两件事,因为您没有在占位符中使用值,因此您的数据应该是这样的

    data: { writtenamount: $("#amount").data('value')},
    

    而且很可能使用方法而不是类型更好

    method: 'POST',
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      您可以使用表单的 OnSubmit 事件来执行此操作。 (look here) 您可以简单地捕获事件并路由到所需的控制器。

      【讨论】:

      • 将其路由到那些控制器
      【解决方案4】:

      你可以做几件事。

      1) 给你的按钮一个名字属性

      您是说您仅限于一个输入字段,但您忘记了您单击的按钮也可以用于传递数据。然后在您的 php 脚本中,您将检查单击了哪个按钮,然后根据该按钮执行您需要的任何功能。

      2) 使用 Ajax 发送您的 postdata

      您可以使用 javascript(或者最好是 jQuery)为您处理发布请求。你给两个按钮一个不同的ID标签,所以&lt;button id="button1"&gt;&lt;button id="button2"&gt;。有了这些信息,您就可以使用 javascript 来查找单击了哪个按钮,并向正确的 php 函数发出 ajax 请求。

      【讨论】:

      • 你能告诉我如何编写代码,以便我知道它是如何完成的,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      相关资源
      最近更新 更多