【问题标题】:Javascript confirm delete - if no do not submit form? CodeigniterJavascript 确认删除 - 如果没有不提交表格?代码点火器
【发布时间】:2011-10-20 02:35:50
【问题描述】:

是否有一段 Javascript 可以阻止表单提交按钮执行功能

我正在使用使用 MVC 模式的 CodeIgniter 框架。

因此,当您单击按钮时,它会调用控制器函数,然后再调用模型函数等。

我尝试在 Javascript 中使用各种东西,包括返回、历史返回。有什么可以阻止任何事件的发生吗?

这是我的代码:

function confirmation() {
    var answer = confirm("Delete Record?")
    if (answer)
    {

    }
    else
    {       //reloads current page - however it still continues to function
        window.redirect("http://localhost/midas/index.php/control_panel/user_records");
    }
}

如果我说“取消”,它仍然会继续执行该功能。有什么办法可以停止浏览器?

这是我的 php 代码:

//js = is a variable which stores the javascript code
echo form_submit('view','View', $js);

这会像这样创建 html 输出:

<input type="submit" onclick="confirmation()" value="View" name="view">

【问题讨论】:

    标签: php javascript codeigniter


    【解决方案1】:

    您需要将javascript事件放在您的表单标签中并使用onSubmit而不是onClick,而且您不需要外部js。

    <form action="url/to/form" onSubmit="return confirm('are you sure?')">
    
    </form>
    

    【讨论】:

      【解决方案2】:

      在导致 POST 的按钮上。然后对该按钮的 OnClick 事件进行函数调用。让该函数返回 true 以继续 POST 或返回 false 以取消操作。

      【讨论】:

        【解决方案3】:
        function confirmation() {
          var answer = confirm("Delete Record?")
          if (answer) {
        
          } else {
            //reloads current page - however it still continues to function
            return false;
          }      
        }
        

        也许向方法返回 false 将停止表单提交。取决于你如何调用确认函数。

        【讨论】:

        • 不继续,我应该将我的 javascript 与我的 php 函数集成吗?目前,javascript 只是发布一条消息,就像您在代码中看到的那样。
        • 确认方法怎么调用?
        • &lt;input type="submit" onclick="return confirmation()" value="View" name="view"&gt;你忘了返回。
        【解决方案4】:

        尝试在else 语句末尾的window.redirect 之后添加return false;

        编辑:

        查看您的onclick 事件代码后,我建议您将onclick 更改为如下所示:

        <input type="submit" onclick="confirmation(); return false;" value="View" name="view">
        

        【讨论】:

        • 可以简单地写成onclick="return confirm('question?');",因为原生的confirm()方法会根据用户的选择返回一个布尔值。在用户取消时,点击事件将返回 false 并阻止表单操作。 op的原始函数confirmation()不是必需的。
        【解决方案5】:

        使用 codeigniter 表单助手将是:

        echo form_open('url/to/form', array('onsubmit'=>'return confirm(\'use triple escape to escape special chars like \\\'quotes\\\'. \')'));
        

        【讨论】:

          【解决方案6】:

          我创建了一个视图助手并为此做一些事情

          function delete_button($id)
          {
            $button = form_open(current_url().'/delete');
            $button .= form_hidden('id', $id);
            $button .= form_submit(array(
              'name' => 'delete', 
              'onclick' => "return confirm('are you sure you wish to delete?');"
            ), 'Delete');
            $button .= form_close();
            return $button;
          }
          

          那么在我看来,我将使用&lt;?= delete_button($row-&gt;id) ?&gt; 来呈现必要的表单并提交(删除)按钮代码。由于 javascript confirm() 方法返回一个布尔值,我们可以简单地只使用 return 方法,因为当用户取消确认对话框时它会返回 false,并且自然会出现一个点击事件,returns false; 会阻止它继续进行到表单操作。

          【讨论】:

            【解决方案7】:

            PHP 代码:

            $attributes = array('id' => 'formId','onsubmit'=>'return validate()');
            echo form_open('controller', $attributes);
            

            其中 validate() 是提交时调用的 javascript 函数。 如果它返回 false,表单将不会提交。 :-)

            【讨论】:

              猜你喜欢
              • 2019-10-23
              • 1970-01-01
              • 2014-01-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-02-27
              • 2012-11-14
              • 1970-01-01
              相关资源
              最近更新 更多