【问题标题】:Form Always submitting with Javascript Confirm表单始终使用 Javascript 确认提交
【发布时间】:2019-10-14 11:29:55
【问题描述】:

表单工作了一段时间,但我移动了一些代码并且无法恢复(吸取的教训),现在代码无法正常工作。简而言之,用户单击删除按钮 > 删除按钮将特定条目 ID 发送到函数,函数获取表单 ID,“确认删除”,然后应该发送到我的 delete_entry.php 代码。现在,即使我点击“否”,表单也始终在提交,并且我添加了一个警报来告诉我它去哪条路线。

我试过注释掉表单,它仍然提交,所以我不认为它与确认功能明确相关(虽然可能很疯狂)

if ($entry['SubEntryID'] == "0") { ?>
<div id="post"><!-- This is the main post-->
    <div id="main">
        <div id="title">
            <?php echo $entry['EntryID']; ?>
            <?php echo $entry['Title']; ?>
        </div><br />
        <p><?php echo $entry['Body']; ?></p><br />
        <div id="postinfo">
          At: <?php echo $entry['CreateDate']; ?><br/>
          Posted by - <?php echo $entry['UserName']; ?>
        </div>
<!-- Start the form for the delete button -->
<form action="Delete_entry.php" method="post" id="Delete<?php echo $entry['EntryID'];?>">    
<input type="hidden" readonly="true" name="EntryID" value="<?php echo $entry['EntryID']; ?>" />
<input type="hidden" readonly="true" name="UserID" value="<?php echo $entry['UserID']; ?>" />
<?php if ($userid == 1 || $userid == $entry['UserID']) { ?>
    <input onclick="confirmdelete('Delete<?php echo $entry['EntryID'];?>')" type="image" src="redx.png" alt="Delete Post" id="btnDelete" value="Delete Post"/>
<?php } ?><br />
        </form>
</div>
function confirmdelete(eid) {

    var retval = confirm("Are you sure you want to delete?" + eid + "?");

    if (retval == true) {
        alert("You said Yes");
        document.getElementById(eid).submit();
        }
    else
    {
        alert("You said No");
    }
}

我希望删除按钮调用该函数,如果为真,该函数通过提交表单来响应,如果为假则取消表单提交。只有在确认为真时才会调用表单页面,然后提交()

【问题讨论】:

    标签: javascript php sql


    【解决方案1】:

    首先,confirmdelete() 没有返回任何真/假,因此没有阻止表单提交的代码。其次,即使函数返回 false,表单也会提交,因为您有 2 次提交(表单和 onclick)。

    将函数调用移至表单的 onsubmit()。去掉onclick,因为输入类型图片默认提交表单。代码如下:

    表格:

    <form action="Delete_entry.php" method="post" 
       id="Delete<?php echo $entry['EntryID'];?>" 
       onsubmit="return confirmdelete(<?php echo $entry['EntryID'];?>)"> 
    

    然后是按钮(onclick去掉):

    <input type="image" src="redx.png" alt="Delete Post" id="btnDelete" value="Delete Post" />
    

    最后是 JavaScript(返回真/假):

    function confirmdelete(eid) {
    
        if (confirm("Are you sure you want to delete?" + eid + "?")) {
            alert("You said Yes");
            return true;
        }
        else
        {
            alert("You said No");
            return false;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-19
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多