多个列表框的更改事件下拉框

时间:2013-05-21 15:06:14

标签: javascript html perl catalyst template-toolkit

my ($self, $c) = @_;
$c->stash->{buildallinfo}=$c->model('DB::misc')->getTestInformation();

Buildall信息转储就像:

Apple => type2=>[2,3]
     type4=>[2,1]

Mango => type6=>[2,3]
     type2=>[2,1]

如果下拉一个chanes自动下拉2,如何在下拉框中呈现它们应该更改?

=苹果改变

它应该自动更改另一个它将具有type2,4的列表然后如果那个选择它应该显示2,3

如何实现这一目标。我并非都能为此做出正确的解决方案。

1 个答案:

答案 0 :(得分:0)

操作下拉列表中的内容是客户端功能,必须由javascript处理。对于Catalyst和TT,他们的工作是在呈现页面时完成的 - 除此之外的任何操作都是别人的问题。

这意味着在您的模型,Catalyst和TT之间,必须安排数据可供javascript使用。换句话说,在Template Toolkit中有一行或两行,它确保您需要使用javascript访问的存储内容转换为javascript变量。

通常,我会沿着这些方面做一些事情,使用一些jQuery:

[% USE JSON.Escape %]

<script>
    var buildallinfo = [% buildallinfo.json %];
    // we now have a JS variable that matches the structure of the perl stash variable
    $('#select_1').change(function(){
         // adjust content of #select_2 using normal JS techniques
         // $.grep(buildallinfo, ...) or whatever
    });
</script>