如何区分表单中的2个输入标签

时间:2016-08-04 22:03:52

标签: php jquery ajax

我在表单中遇到2个输入标记的问题。 我想要实现的是,当选择一个特定输入时,必须生成回声。

我的表格:

$CustDate=$_POST['formYear'] . "-" . $_POST['formMonth'] . "-" . $_POST['formDay'];

$months=$_POST['formMonthsAdded'];

$d="+" . $months . " Months"; //not strtotime time here!

$CustAddedDate=date("Y-m-d", strtotime($d,strtotime($CustDate)));//watch the order of arguments and missing strtotime of the existing date

js:

<form method="post" id="quickpoll">
......
<input class="quickpollsubmit" type="submit" name="quickpollsubmit" value="View">
<input class="quickpollsubmit" type="submit" name="quickpollsubmit" value="Vote">

quickpoll_vote.php:

$(document).on('submit', '#quickpoll', function()
{
var data = $(this).serialize();
    $.ajax({

    type : 'POST',
    url  : 'quickpoll_vote.php',
    data : data,
    success :  function(data)
               {                        
                    $("#quickpoll").fadeOut(500).hide(function()
                    {
                        $(".quickpollwrapper").fadeIn(500).show(function()
                        {
                            $(".quickpollwrapper").html(data);

                        });


                    });

               }
    });
    return false;
});

根本不显示回声,无论我选择查看输入还是投票输入。 只有在我选择查看输入时才会出现回声 我做错了什么?

3 个答案:

答案 0 :(得分:1)

您可以使用以下内容查看是否在PHP中选择了一个按钮。但是,在这种情况下,您有两个具有相同名称的HTML表单元素,因此这些元素必须是唯一的,如下所示。

<form method="post" id="quickpoll">
......
<input class="quickpollsubmit" type="submit" name="quickpollView" value="View">
<input class="quickpollsubmit" type="submit" name="quickpollVote" value="Vote">


if($_POST)
{
   if(isset($_POST['quickpollView']) {
       echo 'you choose View';
   } else if(isset($_POST['quickpollVote']) {
       echo 'you choose Vote';
   }
}

答案 1 :(得分:1)

斯蒂芬尼尔森的

citation

“序列化方法永远不会从提交按钮返回一个值。它不会返回帖子中的提交按钮。您最好只使用隐藏的表单字段并在按钮上添加点击事件”

要检查此点,请添加:

print_r($_POST);

在quickpoll_vote.php的开头

您将看到参数“quickpollsubmit”没有任何值,无论您点击什么按钮。

这是一种解决这个问题的方法。

 $(document).on('click', '.quickpollsubmit', function()
    {
    $('#quickpollsubmit').val($(this).val());
    var data = $("#quickpoll").serialize();
       
        $.ajax({

        type : 'POST',
        url  : 'quickpoll_vote.php',
        data : data,
        success :  function(data)
                   {                        
                        $("#quickpoll").fadeOut(500).hide(function()
                        {
                            $(".quickpollwrapper").fadeIn(500).show(function()
                            {
                                $(".quickpollwrapper").html(data);
    
                            });
    
    
                        });
    
                   }
        });
        return false;
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="" name="quickpollsubmit" id="quickpollsubmit" readonly>
<input class="quickpollsubmit" type="submit" value="View">
<input class="quickpollsubmit" type="submit" value="Vote">

我编辑了代码,因此它与你的PHP部分兼容,但这样一些元素的命名非常糟糕,抱歉。

在您的脚本中,使用隐藏的输入而不是文本的输入,此处用于演示。

答案 2 :(得分:-1)

尝试

if ($_POST['quickpollsubmit'] == 'View') {
    //action for view
} else if ($_POST['quickpollsubmit'] == 'Vote') {
    //action for vore
} else {
    //invalid action!
}