【问题标题】:Check if the button has been pressed after js submitjs提交后检查按钮是否被按下
【发布时间】:2015-08-10 10:47:15
【问题描述】:

我正在尝试检查在我使用 javascript 提交表单后是否按下了表单类型按钮:

<script>
function DeleteIt(string){
    var pattern = string.indexOf('_');
    var prof_nr = string.substr(pattern+1);
    var delete = confirm("Want to delete it?");

    if( delete == true ){
        document.forms['form'].submit();
    }else{
        alert('Cancel');
    }
}
</script>

<form method="POST" name="form">
<input type="button" name="delete" value="Delete" id="prof_'.$row['code'].'" onclick="DeleteIt(this.id);">
</form>

if(isset($_POST['delete'])){
  echo 'Pressed';
}

但它虽然被按下却没有遇到条件。 我不能使用提交类型,因为我已经在表单中有一个,用于搜索字段。每当我输入内容并按 Enter 时,它都会触发该功能,这就是我使用按钮的原因。

【问题讨论】:

  • 能否将您的完整代码添加到问题中(包括form- 和script-tag)?
  • @mario.klump ,显示整个代码没有意义......我相信任何人都可以从我的问题中弄清楚这是怎么回事。我已经包含了标签。
  • 请出示完整的表格。关键是有些人在不知道为什么我们不能使用 submit 类型的情况下回答(或者如果我们可以并解释原因)。
  • @caCtus ,我解释了问题中的所有内容

标签: javascript php


【解决方案1】:

您在代码中使用了很多语言关键字作为变量名,例如delete、string。

您不能使用编程语言的保留字作为您的 变量名。

这是工作代码-

<script type="text/javascript">
function DeleteIt(string1){
    var pattern = string1.indexOf('_');
    var prof_nr = string1.substr(pattern+1);
    var delete1 = confirm("Want to delete it?");

    if( delete1 == true ){
        document.forms['form'].submit();
    }else{
        alert('Cancel');
    }
}
</script>

<form method="POST" name="form">
<button name="delete" id="prof_'.$row['code'].'" onclick="DeleteIt(this.id);">delete</button>
</form>

<?php
if(isset($_POST['delete'])){
  echo 'Pressed';
}

【讨论】:

  • 您编辑了答案并将&lt;button&gt; 标记替换为&lt;input type="submit"&gt;。但是 OP 说他不想要 submit 类型。
  • @Hirdesh ,仔细查看您的代码后,我认为它与输入类型的作用相同......这不好......
  • 我已将我的代码恢复为input tag,因为@petru 的代码仅包含输入标签,尽管这也可以使用button 标签来完成。
  • @HirdeshVishwdewa ,一种提交类型,会干扰我在同一表单上的其他提交。
  • @PetruLebada 为什么你认为用button 标签代替input 不好?
【解决方案2】:

我猜一个用于提交表单的按钮不会提交自己的值。

由于您不希望通过按回车键提交表单,我的想法是添加一个隐藏字段来告诉您该做什么。下面的代码添加了这样一个名为specialAction的隐藏字段,通常设置为save。但是,当按下删除按钮时,其值将更改为 delete。在 PHP 中,您必须检查该字段的值:

<!DOCTYPE html>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <script type="text/javascript">
            function DeleteIt(id){
                var pattern = id.indexOf('_');
                var prof_nr = id.substr(pattern+1);
                var deleteVar = confirm("Want to delete it?");

                if( deleteVar == true ){
                    document.forms['form']['specialAction'].value = "delete";
                    document.forms['form'].submit();
                }else{
                    alert('Cancel');
                }

                string 
            }
    </script>
    <form method="POST" name="form">
        <input type="hidden" id="specialAction" name="specialAction" value="save">
        <input type="text" name="testPurpose" value="Hit enter after focusing">
        <input type="button" value="Delete" name="delete" id="prof_test" onclick="DeleteIt(this.id);">
    </form>
    <?php 
        if(isset($_POST['specialAction'])) echo $_POST['specialAction'];
    ?>
    </body>
</html>

附注:不要使用delete 作为变量名,因为它已经被用作运算符。此外,您应该告诉浏览器使用 &lt;script type="text/javascript"&gt; 而不仅仅是 &lt;script&gt; 来解释 JavaScript。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多