2016-08-04 35 views
1

我遇到了表單中的2個輸入標籤問題。 我想實現的是當選擇某個輸入時,必須生成一個回聲。如何區分表單中的2個輸入標籤

我的形式:

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

的JS:

$(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; 
}); 

quickpoll_vote.php:

if($_POST) 
{ 
    if($_POST['quickpollsubmit'] == 'View') { 
    echo 'you choose View'; 
    } 
} 

回波就不會出現在所有的,不管我選擇查看輸入或投票輸入。 回聲應該只出現在我選擇查看輸入 我做錯了什麼?

+0

嘗試,如果(!空($ _ POST)),而不是如果($ _ POST)考慮後始終是一個數組。 – Nitin

+0

@Nitin不幸的是;這沒有什麼區別 –

+0

@Nitin一個空數組是一個「假」值(在比較表達式中鬆散地轉換爲假值)。 –

回答

1

斯蒂芬·尼爾森的citation

「的連載方法永遠不會返回從提交按鈕的值,它不返回後提交按鈕你會做最好只使用一個隱藏的。表單字段並添加一個click事件按鈕」

要檢查這一點,添加:

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部分兼容,但這樣一些元素是非常糟糕的命名,很抱歉這件事。

在您的腳本中,使用隱藏輸入而不是文本之一,此處用於演示。

+0

我確定;這很好用!我會像你說的那樣創建一個隱藏的領域。感謝@technico爲這個解決方案 –

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'; 
    } 
} 
+0

我試過這個,但沒有結果...我沒有任何迴應 –

+0

檢查此鏈接它談論類似的問題:http://stackoverflow.com/questions/547821/two-submit-buttons-in-one-form – Vijai

-1

嘗試

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

與真正的問題沒有關係:OP的原始'if($ _POST ['quickpollsubmit'] =='View'){...}'足以產生問題。因爲真正的問題是沒有價值的發送,所以接收部分的任何改變都不可能有所幫助。或者'print_r($ _ POST)'? – technico

相關問題