0

我有两个选择框和一个链接。我从第一个选择框中选择一个值,从第二个选择框中选择另一个值,然后单击链接。每次都必须将值存储在一个数组中,而不需要替换以前的值。如何我可以在不使用多个选择框的情况下做到这一点吗?

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

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

抱歉忘了提..它在codeigniter中

4

4 回答 4

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());
});
于 2013-03-06T10:26:24.867 回答
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();以保持向用户显示的行,以便他可以根据需要更改值。

于 2013-03-06T10:27:04.497 回答
0

如果您希望在您的网站中保持持久性,那么我建议您查看PHP Cookies

在您的情况下,您希望持久地存储一个数组,因此您有几个选择。

要么实现HTML 隐藏元素,要么可以使用序列化将数组存储在 cookie 中。

于 2013-03-06T10:26:38.560 回答
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']);
?>

当然,这可以详细说明。

于 2013-03-06T10:41:49.937 回答