繁体   English   中英

Javascript确认删除 - 如果没有提交表单? 笨

[英]Javascript confirm delete - if no do not submit form? Codeigniter

是否有一个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">

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

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

</form>

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

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

  } else {
    //reloads current page - however it still continues to function
    return false;
  }      
}

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

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

编辑:

看完你的onclick事件代码后,我建议你改变你的onclick看起来像这样:

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

使用codeigniter表单助手,它将是:

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

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

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;
}

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

PHP代码:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM