簡體   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