5

select2 jQuery PlugIn を使用して、タグ ボックスを作成しました。したがって、次の html フォーム コードを使用しました。

<form action="someAction" method="post">
    <fieldset>
        <select id="tags" multiple="" name="tags">
            <option value="tag1">val1</option>
            <option value="tag2">val2</option>
            <option value="tag3">val3</option>
        </select>
        <button type="submit" class="btn">Submit</button>
    </fieldset>
</form>

Select2 は、そこから次のフィールドを生成します。

<input type="text" class="select2-input" autocomplete="off" id="s2id_autogen1" style="width: 10px;">

問題は、name属性が欠落していることです。属性$_POSTがない場合、PHPの変数から入力フィールドのデータ/テキストを取得するにはどうすればよいですか? nameどうすればこれを管理できますか?

セットアップJSは次のとおりです。

$(document).ready(function() {
$("#tags").select2({
    placeholder: "Insert tag",
    allowClear: true,
    minimumInputLength: 2,
    maximumSelectionSize: 1,
    minimumWidth: 200
});

});

4

5 に答える 5

1

間違いなく、この単純なスニペットで解決しました。

非表示の入力を追加しました:

<input type="hidden" id="manufacturer" name="manufacturer" value="1">

そして選択のID:

<select class="full-width required" data-placeholder="Select Country" data-init-plugin="select2" required id='myselect'>

次に、単純な JS を同じページに追加して、ユーザーが値を変更するたびに非表示の値を変更します。

    <script type='text/javascript'>
    $(function() {
        $('#myselect').change(function() {
            // if changed to, for example, the last option, then
            // $(this).find('option:selected').text() == D
            // $(this).val() == 4
            // get whatever value you want into a variable
            var x = $(this).val();
            // and update the hidden input's value
            $('#manufacturer').val(x);
            alert("cambiado");
        });
    });
    </script>

于 2015-09-14T22:34:23.963 に答える
0

select2 Github アカウントのいくつかのチケットをざっと読んだところ、そのうちのいくつかでこの問題について言及されていました。select2 は name 属性を追加していないようです。

フォーム送信時にJSを介して動的に追加してみて、それが機能するかどうかを確認してください。

$('form').submit(function() {
    $('#s2id_autogen1').attr('name', 'whatever');
    return true;
});

または、ajax を介してフォームを送信し、ID を介して値を取得して、そのように投稿することもできます

于 2013-04-29T10:46:07.417 に答える
0

POST を機能させるには名前が必要ですが、ID があることに気付きました。

id="s2id_autogen1"

JS を使用して ID で値を取得し、投稿します。

ID が変更される場合は、次のクラスを使用できます。

HTML:

<form action="someAction" method="post">
<fieldset>
    <!-- This will contain the value from the generated input -->
    <input type = 'hidden' name = 'myField' id = 'myField' />
    <select id="tags" multiple="" name="tags">
        <option value="tag1">val1</option>
        <option value="tag2">val2</option>
        <option value="tag3">val3</option>
    </select>
    <button type="submit" class="btn">Submit</button>
</fieldset>

JS

$(document).ready(function(){
       $("#tags").select2({
       placeholder: "Insert tag",
       allowClear: true,
       minimumInputLength: 2,
       maximumSelectionSize: 1,
       minimumWidth: 200
});

//Make it so everytime the input with the class select2-input value is changed
//the value gets copied into the element with the id myField
$('input.select2-input').live('change', function(){
    $('input#myField').val($(this).val());
});

});

このように、フォームを送信すると、値が POST 変数に自動的に含まれます。

于 2013-04-29T10:44:17.567 に答える