使用jQuery模式屏幕,一个作品,一个两个相同POST行为不?(Two identical POS

2019-10-19 09:46发布

我用这个颜色框代码:

<link rel="stylesheet" href="http://www.jacklmoore.com/colorbox/example1/colorbox.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://www.jacklmoore.com/colorbox/jquery.colorbox.js"></script>
<script>
    $(document).ready(function(){
        $("#cboxFormButton").click(function(e){
        e.preventDefault();
        $.colorbox({
        href: $(this).closest('form').attr ('action'),
        data: {a: $("input#111").val()}
        });

            return false;
        });
    });
</script>

沿着与这两个相同的POST操作按钮:

<form action="rrr1.php" method="POST" target="_blank" class="">
    <input id="111" name="a" type="hidden" value="1"/>
    <input type="submit" id="cboxFormButton" class="button" value="Test">
</form>
  </div>

  <div>
<form action="rrr1.php" method="POST" target="_blank" class="">
    <input id="111" name="a" type="hidden" value="1"/>
    <input type="submit" id="cboxFormButton" class="button" value="Test">
</form>

这是加载目标rrr1.PHP文件:

<?php 

if(isset($_POST['a']));

switch ($_POST['a']) {

    case "1":
        $param1 = "1";
        break;

    case "2":
        $param1 = "2";
        break;

    default:
        $param1 = "other";
}

当我点击第一个按钮,一个模式窗口打开并加载PHP就好了,但是当我点击第二个按钮,它只是重定向直接到PHP文件。

这是因为它们共享相同的ID?

可以说,我想有这些相同的按钮100,并在每一个刚刚改变输入的值(也就是现在的“1”,这将是2,3,4 ... 100)。 我想模态窗口,根据这些变化值继续工作以同样的方式,并显示不同的内容。 所以基本上我宁可不要为这些按钮添加额外的代码。

是什么原因导致这个问题? 什么是最有效的解决方案?

编辑:

现在我可以理解,我将不得不乘以这样的代码:

<script>
    $(document).ready(function(){
        $("#cboxFormButton1").click(function(e){
        e.preventDefault();
        $.colorbox({
        href: $(this).closest('form').attr ('action'),
        data: {a: $("input#111").val()}
        });


            return false;
        });
    });

                $(document).ready(function(){
        $("#cboxFormButton2").click(function(e){
        e.preventDefault();
        $.colorbox({
        href: $(this).closest('form').attr ('action'),
        data: {a: $("input#222").val()}
        });


            return false;
        });
    });

</script>

<form action="rrr1.php" method="POST" target="_blank" class="">
    <input id="111" name="a" type="hidden" value="1"/>
        <input id="qqq" name="b" type="hidden" value="1"/>
    <input type="submit" id="cboxFormButton1" class="button" value="Test">
</form>

<form action="rrr1.php" method="POST" target="_blank" class="">
    <input id="222" name="a" type="hidden" value="2"/>
    <input type="submit" id="cboxFormButton2" class="button" value="Test">
</form>

有什么更高效/更短的代码?

Answer 1:

ID必须是HTML元素的独特。 使用该元素的名称和相对位置来获取数据。 然后你就可以完全消除冲突的IDS。

<form action="rrr1.php" method="POST" target="_blank" class="">
    <input name="a" type="hidden" value="1"/>
    <input type="submit" class="button cboxFormButton" value="Test">
</form>

<form action="rrr1.php" method="POST" target="_blank" class="">
    <input  name="a" type="hidden" value="2"/>
    <input type="submit" class="button cboxFormButton" value="Test">
</form>

<script type="text/javascript">
$(document).ready(function(){
    $(".cboxFormButton").click(function(e){
        e.preventDefault();
        var $form = $(this).closest('form');
        $.colorbox({
            href: $form.attr('action'),
            data: {a: $form.find('input[name="a"]').val()}
        });

        return false;
    });
});
</script>


Answer 2:

所有的DOM元素都拥有唯一的ID作为解释在这里 。

不幸的是,你们两个元素DOM 具有相同的ID cboxFormButton

让这些ID是唯一的。



文章来源: Two identical POST actions with jquery modal screen, one works, and one doesn't?