如何从Yiibooster的TbSelect2小部件中检索POST数据?

时间:2014-04-22 13:05:19

标签: javascript php ajax forms yii

我正在为Yiibooster使用TBselect2小部件。我的观点代码是:

$this->widget(
        'bootstrap.widgets.TbSelect2',
        array(
            'name' => 'cat_names',
            'data' => Category::getRecipe(),
            'htmlOptions' => array(
                'multiple' => 'multiple',
                'class' => 'span3'
            )
        )
        );

渲染输出生成自动完成输入,如“field”,但是当我检查输入字段看起来相似时,它不是输入字段而是包含所有选定项目的UL列表的div标记。

从自动完成框中选择所需的值后,我必须对表单进行POST,但由于TBSelect2呈现的HTML不是输入字段,如何获取自动完成TBSelect2小部件生成的值,因为它不是表单字段?

P.S:这是一个包含多个html元素的长格式,所以我不想使用Ajax提交表单。

任何帮助?

2 个答案:

答案 0 :(得分:2)

如果您在浏览器中使用开发人员工具,您会看到有一个输入框和一个选择框。您的代码应如下所示:

<div class="select2-container" id="s2id_options" style="width: 100%;">
    <a href="javascript:void(0)" onclick="return false;" class="select2-choice select2-default" tabindex="-1">
        <span class="select2-chosen">Select or start typing name.</span>
        <abbr class="select2-search-choice-close"></abbr>
        <span class="select2-arrow"><b></b></span>
    </a>
    <input class="select2-focusser select2-offscreen" type="text" id="s2id_autogen2">
</div>
<select name="cat_names" id="cat_names" tabindex="-1" class="select2-offscreen">
    //Your options
</select>

选择框cat_names将自动在POST中显示正确的值。因此,如果您查看$_POST['cat_names'],它应该具有您在Select2输入中选择的值。

答案 1 :(得分:0)

您是否尝试填写该字段,提交整个表单并查看,请求中是否有值?因为当我尝试"Loading data" example from docs时,当我选择值时,它会根据隐藏的输入进行。

仍然,根据Select2 documentation

  只要用户更改了值,就会在原始元素上触发

更改事件

因此,当用户选择一个值时,会有一个事件,您可以使用该事件做任何你想做的事情。