【问题标题】:three selects each based on previous jquery三个选择每个基于以前的 jquery
【发布时间】:2013-12-11 09:16:46
【问题描述】:

我正在尝试在 cakePhp + jQuery 中进行 3 次选择,第一次选择省份,第二次 - 地方,第三次 - 那个地方的学校。这是我的蛋糕代码(到目前为止):

           echo $this->Form->input('proviences', array(
                'type' => 'select',
                'empty' => true,
                'options' => $proviences,
                'label' => 'Province',
                'class' => 'proviences',
                'before' => '<div style="float:left;width:180px"',
                'after' => "</div>"
            ));

            echo $this->Form->input('localities', array(
                'type' => 'select',
                'empty' => true,
                'options' => $localities,
                'label' => 'City',
                'class' => 'localities',
                'before' => '<div style="float:left;width:180px"',
                'after' => "</div>"
            ));
            $schoolList = array();
            foreach($schools as $value) {
                $schoolsList[]=$value['name'];
            }
            echo $this->Form->input('school_id', array(
                'label' => 'Szkoła',
                'options' => $schoolsList,
                'empty' => true,
                'before' => '<div style="float:left;width:240px"',
                'after' => "</div>",
                'onchange' => "submit();",
            ));

在 $schools 我有一个这样的列表

array(
   id1 => array(
         'name' => 'some_name',
         'province' => 'some_province',
         'locality' => 'some_city'
         )
)

并使用它来获取省份、地区和学校名称的列表 我试图使用它,但无法让它工作;/ Filter three select boxes based on previous selections 有没有办法在没有 ajax 的 jQuery 中做到这一点?

【问题讨论】:

  • 您可以在不使用 ajax 的情况下做到这一点,但为此您需要在客户端使用 schools 数组,并在客户端也基于该数组创建/编辑选项。

标签: javascript php jquery cakephp


【解决方案1】:

您可以在不使用 ajax 的情况下做到这一点,但为此您需要客户端的学校数组,并在客户端也基于该数组创建/编辑选项。

这是一个有效的fiddle。 (匆忙拼凑,但你明白了)。不过,您需要将 schools 数组放入 js 中。您可以为此使用 AJAX,也可以在页面上将其作为 json 传递:

echo 'var schools = JSON.parse('.json_encode($schools).');

您还必须考虑将其放置在何处,以使变量不会泄漏到全局范围内。你可以把它放在 jQuery 闭包中,例如:

echo '(function($){';
echo 'var schools = JSON.parse('.json_encode($schools).');

// now the javascript from the fiddle...

echo '}(jQuery))';

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 2015-02-09
    • 2011-11-23
    • 2012-09-10
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多