0

我试图在一个选择中发布我的所有选项,到目前为止我只发布一个值。我应该添加什么来发布我的表单中的所有选项?

这是我到目前为止得到的代码

    $('.add_button').click(function () {
    $('.valj_grupp_email option:selected').each(function () {
        $("<option/>").
        val($(this).val()).
        text($(this).text()).
        appendTo(".valda_grupper_email");
    //-------------------Here I need help to select all my options in .valda_grupper_email_form-------------------------//  
            $.post(
            'mail_visa_kunder.php',
            $('.valda_grupper_email_form').serialize(),
            function(data){
            $("#testar3").html(data)
            }   
        );
        return false;
    //--------------------------------------------//

    });
});

表格示例:

<form class="valda_grupper_email_form" method="post">
   <select>
      <option value="1">test1</option>
      <option value="2">test2</option>
      <option value="3">test3</option>
   </select>
</form>

我应该补充一点,我需要保留我的 html 代码。因为如果我想从我的选择列表中删除某些内容。

删除代码:

$('.delete_button').click(function () {
    $('.valda_grupper_email option:selected').each(function () {
        $(this).remove();
        $.post(
            'mail_visa_kunder.php',
            $('.valda_grupper_email_form').serialize(),
            function(data){
            $("#testar3").html(data)
            }   
        );
        return false; 
    });
});

我的应用程序的图片让您更容易理解。

在此处输入图像描述

编辑:

$('.add_button').click(function () {
        var data = '';
        $('#valda_grupper_email option').each(function(){
            data += 'valda_grupper_email=' + $(this).val() + '&';
        });

        $.post(
            'mail_visa_kunder.php',
             data,
             function(data){
                $("#testar3").html(data)
             }   
         );
        return false;
    });
});

Edit2:它仍然只发布一个值,但现在我不需要选择它。接近解决方案:)

var emails =  '';
$('.add_button').click(function () {
    $('.valj_grupp_email option:selected').each(function () {
        $("<option/>").
        val($(this).val()).
        text($(this).text()).
        appendTo(".valda_grupper_email");

        $('.valda_grupper_email option').each(function(){
            emails += 'valda_grupper_email=' + $(this).val() + '&';
        });
        $.post(
            'mail_visa_kunder.php',
            emails,
            function(data){
            $("#testar3").html(data)
            }   
        );
        return false;
    });
});
4

2 回答 2

0

我认为最简单的解决方案是将selected属性添加到每个选择并multiple在他们的选择上设置属性:

    $("<option/>")
      .val($(this).val())
      .text($(this).text())
      .attr('selected', true)
      .appendTo("#valda_grupper_email");

<form class="valda_grupper_email_form" method="post">
   <select id="valda_grupper_email" name="valda_grupper_email" multiple="multiple">
      <option value="1">test1</option>
      <option value="2">test2</option>
      <option value="3">test3</option>
   </select>
</form>

在上面的代码中,我将类 'valda_grupper_email' 更改为 ID,因为我假设选择是唯一的,并且最好使用 ID 来定位唯一元素。

如果您不想更改标记而只更改 ajax 调用的方式,您可以这样做:

var emails =  '';
$('#valda_grupper_email option').each(function(){
    emails += 'valda_grupper_email[]=' + $(this).val() + '&';
});

$.post(
    'mail_visa_kunder.php',
     emails,
     function(data){
        $("#testar3").html(data)
     }   
 );
于 2013-03-31T20:56:59.657 回答
0

jsFiddle

var all_options = [];

$("#valda_grupper_email option").each(function()
{
    all_options.push(this.value);
});

var myJsonString = JSON.stringify(all_options);

现在您可以在 jquery 中发送 json 字符串POST

于 2013-03-31T21:03:22.727 回答