Обработка Multiple Select

237
10 декабря 2016, 10:36

Есть простой multiple select:

<select class="chosen" multiple="true" name="name[]"> 
  <option value="1">Англия</option> 
  <option value="2">Бельгия</option> 
  <option value="3">Венгрия</option> 
 </select>

Есть ли возможность в массив name[] получать не только value's, но и текст внутри тега <option>? Нужны и значения и текст, парами

В поисках решения на php, либо jquery, либо в рамках JQuery Chosen

Answer 1

Волье как массив представить option value='1; Англия' на пхп разобрать explode(';',$val)

Answer 2
$(".chosen option:selected").text();
Answer 3

Вообще, передавать не только value, но и сам текст тега - это не очень хороший стиль. Видимо поэтому это не предусмотрено по умолчанию.

Честно говоря, мне больше нравится ответ @Naumov .

Но можно и так:

<?php
if (isset($_POST['method']) && $_POST['method']=="ajax") {
    //print_r($_POST);
    $postData = [];
    if (!empty($_POST['postData'])) {
        foreach ($_POST['postData'] as $item) {
            $value = $item[1];
            if (count($item)>2) $value = [$item[1], $item[2]];
            if (!isset($item[0])) {
                $postData[$item[0]] = $value;
            }
            else {
                if (is_array($postData[$item[0]])) {
                    $postData[$item[0]][] = $value;
                }
                else {
                    $tmp = $postData[$item[0]];
                    $postData[$item[0]] = [$tmp, $value];
                }
            }
        }
    }
    return;
}
echo '
    <form action="api.php" data-form="ajax">
        <select name="myselect" multiple="multiple" size="5">
            <option value="1">En</option>
            <option value="2">Be</option>
            <option value="3">Ve</option>        
        </select>
        <br><br>
        <button type="submit">submit</button>
    </form>
    <script src="https://code.jquery.com/jquery-2.2.4.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $("form[data-form=ajax]").submit(function() {
                var elements = $(this).find("input[type=text], input[type=checkbox]:selected, input[type=radio]:selected, textarea, select"),
                    postData = [];
                if (elements.length>0) {
                    for(var i = 0; i < elements.length; i++) {
                        if (elements.eq(i).is("select")) {
                            var elSelected = elements.eq(i).find("option:selected"); 
                            if (elSelected.length>0) {
                                for(var j = 0; j < elSelected.length; j++) {
                                    postData.push([elements.eq(i).attr("name"), elSelected.eq(j).val(), elSelected.eq(j).text()]);
                                }
                            }
                        }
                        else {
                            postData.push([elements.eq(i).attr("name"), elSelected.eq(j).val()]);
                        }
                    }
                }
                $.ajax({
                    type: "POST",
                    url: $(this).attr("action"),
                    data: ({
                        postData : postData,
                        method : "ajax"
                    }),
                    success: function(msg){
                        alert(msg);
                    }
                });
                return false;
            });
        });
    </script>
';
READ ALSO
Проблема с наложением одного блока на другой

Проблема с наложением одного блока на другой

Здравствуйте есть слайд шоу с автопрокруткой картинок, и есть отдельный блок в котором расположены круги которые показывают какая картинка...

217
Как задать ширину для кнопки

Как задать ширину для кнопки

ЗдравствуйтеНе получается почему-то установить фиксированную ширину для кнопки

277
Как получить ссылку на изображение, зная ссылку на HTML страницу её содержащую? [закрыто]

Как получить ссылку на изображение, зная ссылку на HTML страницу её содержащую? [закрыто]

У меня есть массив ссылок на сайт, на котором сделан скриншот, такого типа:

272