Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多个列表框的更改事件下拉框_Javascript_Html_Perl_Catalyst_Template Toolkit - Fatal编程技术网

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

Javascript 多个列表框的更改事件下拉框,javascript,html,perl,catalyst,template-toolkit,Javascript,Html,Perl,Catalyst,Template Toolkit,Buildall信息转储类似于: my ($self, $c) = @_; $c->stash->{buildallinfo}=$c->model('DB::misc')->getTestInformation(); 如果下拉列表中的一个通道自动更改,则如何在下拉框中呈现它们下拉列表2应更改 =苹果的变化 它应该自动更改另一个,它将有类型2,4的列表,如果选择了,它应该显示2,3 如何做到这一点。我并没有找到正确的解决方案。在下拉列表中操作内容是一个客户端功能,必须由j

Buildall信息转储类似于:

my ($self, $c) = @_;
$c->stash->{buildallinfo}=$c->model('DB::misc')->getTestInformation();
如果下拉列表中的一个通道自动更改,则如何在下拉框中呈现它们下拉列表2应更改

=苹果的变化

它应该自动更改另一个,它将有类型2,4的列表,如果选择了,它应该显示2,3


如何做到这一点。我并没有找到正确的解决方案。

在下拉列表中操作内容是一个客户端功能,必须由javascript处理。对于Catalyst和TT,他们的工作是在呈现页面时完成的——超出这一点的任何操作都是其他人的问题

这意味着在您的模型Catalyst和TT之间,必须为javascript提供数据做出安排。换句话说,模板工具包中的一两行代码可以确保您需要使用javascript访问的任何存储内容都可以转换为javascript变量

通常,我会使用一些jQuery按照以下思路做一些事情:

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

Mango => type6=>[2,3]
     type2=>[2,1]
[%使用JSON.Escape%]
var buildallinfo=[%buildallinfo.json%];
//现在我们有了一个与perl stash变量结构匹配的JS变量
$('#选择_1')。更改(函数(){
//使用普通JS技术调整#select_2的内容
//$.grep(buildallinfo,…)或任何东西
});
[% 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>