确认记录删除,无需点击php

时间:2016-04-07 04:19:33

标签: javascript php jquery html

我有一个我喜欢使用的导航菜单,因为它可以快速轻松地导航:

<form action="../">
<select onchange="window.open(this.options[this.selectedIndex].value,'_top')">
<option value="" selected="selected">Navigate</option>

<option value="view_record.php?file_id=<? echo $row['file_id']; ?>">View</option>
<option value="delete_record.php?file_id=<? echo $row['file_id']; ?>" >Delete</option>

</select>
</form>

onchange导航都打到各自的.php页面,没问题。

但要删除记录,就像它一样,一旦用户点击导航菜单上的选择,他们就会敬酒,特别是如果他们无意中选择了它。

我已经尝试了一些东西以某种方式修改onclick javascript的东西:

echo "<td><a onClick=\"javascript: return confirm('Please confirm deletion');\" href='delete.php?id=".$query2['id']."'>DELETE</a></td><tr>";

如果单击“删除”,则有效,但在我的导航菜单中,它是一个onchange事件。

我试过了:

<form action="../">
<select onchange="window.open(this.options[this.selectedIndex].value,'_top')">
 <option value="" selected="selected">Navigate</option>

<option value="view_record.php?file_id=<? echo $row['file_id']; ?>">View</option>


</select>
</form>

<form action="../">
<select onchange="javascript: return confirm('Please confirm deletion');">
<option value="" selected="selected">Navigate</option>

<option value="delete_f.php?file_id=<? echo $row['file_id']; ?>" >Delete Case </option>
 </select>
 </form>

但所有这一切都是将两个菜单堆叠在一起。

我一直在寻找一种方法来使用某种条件语句来根据链接更改onchange事件,但是链接位于'select onchange'命令下面,这意味着它首先被读取。

我试图将代码添加到等待的php页面以弹出确认删除警告框,但我最终得到的是一个带有'OK'而不是'OK'和'Cancel'的框以返回到前一页如果被取消。

修改

我尝试将其添加到php页面:

echo '<script language="JavaScript" type="text/javascript">';
echo 'var checK = confirm("Are you sure to delete?")';
echo 'if (!checK)';
echo '{';
echo 'history.go(-1); ';
echo '}';

echo '</script>';

但没有任何反应

我试过了:

echo '<script language="javascript">';
echo 'confirm("message successfully sent")';
echo '</script>';

但是当我点击取消时,没有返回上一页。我不知道如何让php识别用户点击取消然后导航回来。另外,即使我单击取消,其余的PHP代码也会运行。

3 个答案:

答案 0 :(得分:1)

那是因为你实际上需要调用JavaScript函数。尽管我们都喜欢,但Javascript(以及任何其他语言)会对触发器起作用。尝试类似下面的内容。

<script type="text/javascript">
function ConfirmDelete()
{
var IsOkToDelete = Confirm("Are you sure you want to delete this record?");
if (IsOkToDelete) { // not sure how you're doing the delete but it happens here

// Once you delete it you can use window.location.href = 'http://mywebsite.com/records' or something url there --- EDIT: actually you can use window.history.back() as well if you want to go back one page programatically.
} 
// else the function falls through and no navigation/deletion happens happens.
}
</script>

然后你实际上就这样调用脚本:

<input type="button" onclick="ConfirmDelete()" value="Go" />

答案 1 :(得分:1)

正如其他用户所建议的那样,你应该避免使用JS inline或将PHP与javascript混合使用。您在上面尝试的代码应如下所示。

您的表单代码

<form action="../">
<select onchange="redirectFunc(this.value,'<? echo $row['file_id']; ?>')">
<option value="" selected="selected">Navigate</option>

<option value="view">View</option>
<option value="delete" >Delete</option>

</select>
</form>

然后你的脚本

<script>
function redirectFunc(action,id){
    if(action!=""){
    if(action=='view'){
        var url='view_record.php?file_id='+id;
        window.open(url,'_top')
    }else{
        var conf=confirm('Are you sure to delete this record');
        if(conf){
            var url='delete_record.php?file_id='+id;
            location.href=url;
        }
    }
    }
}
</script>

通过这种方式,您可以动态使用JS函数,而无需使用内联函数或不在循环中重复它。

答案 2 :(得分:0)

<form action="../">
  <select onchange="decideWhatToDo(this.value, this.selectedIndex, this)">
    <option value="" selected="selected">Navigate</option>

    <option value="view_record.php?file_id=<? echo $row['file_id']; ?>">View</option>
    <option value="delete_record.php?file_id=<? echo $row['file_id']; ?>" >Delete</option>

  </select>
</form>

<script>
function decideWhatToDo(value, index, elem){

var txt = elem.options[index].text

if(txt == 'Delete'){
    if(confirm('Please confirm deletion')){
      // do where to go
   }
  return false;
}
}else{
    //........
//window.open(value,'_top')
}

</script>