2013-03-06 57 views
0

我有兩個選擇框和一個link.i從第二選擇框中選擇來自第一選擇框中一個值,另一和點擊link.the值已經獲得存儲在數組中沒有以前的值越來越replaced.how每次我可以做到這一點,而無需使用多個選擇框?存儲選擇框的值到一個數組

<select name="sq" id="sq" > 
<option value=""></option> 
</select> 

<select name="as" id="as" > 
<option value=""></option> 
</select> 

對不起忘了mention..its在笨

+1

你的意思是存儲?他們每次在頁面上或每次提交後都會更改?你可以添加更多的代碼嗎? – jtheman 2013-03-06 10:26:10

+0

嗨,歡迎來到StackOverflow。你用一種很難理解的方式來表達你的問題。請嘗試添加示例輸入/輸出或示例以幫助我們更好地理解您的問題/目標。 – 2013-03-06 10:26:33

+0

檢查並試試這個示例。[點擊這裏](http://stackoverflow.com/questions/6437763/remembering-options-in-a-select-box-array-after-submitting-through-php) – 2013-03-06 10:27:54

回答

0

這與AJAX發送數據,而無需刷新頁面:

用於鏈接<a href="#" id="submitlink">Submit data</a>

然後添加下面的jQuery腳本:(您需要包括jQuery庫第一)

$('#submitlink').click(function(event) { 
    event.preventDefault(); // Stops default link behaviour on click   
    $.ajax({ 
     url: "yourphp.php", // where to send 
     data: 'sq=' + $('#sq').val() + '&as=' + $('#as').val(), // select values 
     type: "POST", 
     success: function(data){ 
      // If you want to confirm 
      alert('Added'); 
     } 
    }); 
}); 

然後在你的PHP腳本中存儲數據庫或會話中的$ _POST數據...

會話示例,存儲:

<?php 
    session_start(); 
    if (!isset($_SESSION['sq']) $_SESSION['sq'] = array(); 
    $_SESSION['sq'][] = $_POST['sq']; 

    if (!isset($_SESSION['as']) $_SESSION['as'] = array(); 
    $_SESSION['as'][] = $_POST['as']; 

    ?> 

若要檢索您可以使用結果:

<?php 
    session_start(); 
    if (isset($_SESSION['sq']) print_r($_SESSION['sq']); 
    if (isset($_SESSION['as']) print_r($_SESSION['as']); 
?> 

當然,但是這可能會加以闡述。

+0

我不能按照會話部分..如何將這些值發送到我的控制器,並顯示它在那裏寡婦會議? – user2138679 2013-03-06 11:34:36

+0

這是以最基本的方式使用PHP本機會話。您沒有告訴我們關於您使用的控制器的任何信息。這只是將表單數據添加到會話cookie的一個非常基本的腳本。我無法猜測您的設置,因此請包括有關您的PHP基礎架構的相關信息,並在原始問題中將其作爲編輯進行發佈。不過我認爲我的解決方案就是你要找的。 – jtheman 2013-03-06 11:57:18

1

您可以使用變更事件來存儲選擇的值。

的Html

<select name="sq" id="sq" > 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 

的Javascript

arrSelected = [] 
$("#sq").change(function(){ 
    arrSelected.push($(this).val()); 
}); 
1

與註釋的添加信息,這裏是我的建議:

HTML:

<div class="selectLine"> 
<select name="sq[]" > 
<option value=""></option> 
</select> 

<select name="as[]" > 
<option value=""></option> 
</select></div> 
<a id="addOption"> 

的JavaScript:

$('#addOption').click(function(){ 
    $('.selectLine').last().after($('.selectLine').outerHtml()); 
    $('.selectLine').last().prev().hide(); 
}); 

PHP接收柱:

foreach($_POST['sq'] as $key=>$name){ 
    //Make sure you stay consistent with the keys to make sure the 2 values were entered at the same time. 
    echo '<p>'.$name.' is a '.$_POST['as'][$key].'</p>'; 
} 

添加[]對輸入的名稱末尾將它們放入數組。但是如果您想要多個值,則需要多個...

您可以刪除$('.selectLine').last().prev().hide();以保持向用戶顯示的行,以便他可以根據需要更改這些值。

+0

這實際上很有趣!我不知道html名稱屬性的行爲是這樣的。你介意創建一個演示這個的小提琴嗎? – 2013-03-06 10:27:58

+0

這不是OP所要求的。每個選擇框僅在頁面上使用一次。 – jtheman 2013-03-06 10:28:05

+0

@jtheman它仍然非常接近...一個小調整可能是爲了,但問題不是那麼清楚。 – Salketer 2013-03-06 10:30:32

相關問題