如何使用Jquery-option-tree插件预加载<options>和<select>

时间:2015-04-26 16:22:40

标签: php jquery select click

我在不是基于Wordpress的独立网站上使用Jquery-option-tree插件,如演示页面上的示例7,除了我没有传递.txt文件,但是PHP页面正在生成&lt;选项&gt;要传递给插件。 http://kotowicz.net/jquery-option-tree/demo/demo.html 这完全有效:所以让我们说用户想要为新产品选择一个类别,该插件适合产生一个不错的目的:“食物 - &gt;水果 - &gt;苹果”用户点击。 (见前7的演示页) 如果产品已经存在并且已分配类别,那该怎么办?我想在编辑该产品时向用户显示,预加载树。 我有来自数据库的ids路径,所以只需要在没有用户交互的情况下运行插件,使用我传递的值。我看到了这个问题:jQuery在select选项上模拟click事件 并试图用这个(和其他)方法模拟用户点击没有运气。  $( '#选择')     .VAL(值)     .trigger( '点击'); 这里调用函数: $(function(){                 var options = {                         empty_value:'',                         set_value_on:'each',                         indexed:true,//树中的数据由值(ids)索引,而不是由标签索引                         on_each_change:'/ js / jquery-option-tree / get-subtree.php',//此文件将使用'id'参数调用,必须返回JSON数据                         选择:功能(等级){                             返回'选择级别'+级别;                         },                         loading_image:'/ js / jquery-option -tree / ajax-load.gif',                         show_multiple:10,//如果为true - 将设置大小以显示所有选项                         选择:''                     };                 $ .getJSON('/ js / jquery-option-tree / get-subtree.php',function(tree){//首先加载文件来初始化树                     $('input [name = parent_category_id]')。optionTree(tree,options);                 });             }); 在这里你可以看到插件: https://code.google.com/p/jquery-option-tree/

2 个答案:

答案 0 :(得分:0)

我不知道这个插件,但看看这些例子似乎有一个适合你的需求; 示例6 - AJAX延迟加载&amp;每个级别更改的设置值

理论上,这只需要一些配置选项:

preselect: {'demo6': ['220','226']}, // array of default values - if on any level option value will be in this list, it will be selected
preselect_only_once: true, // prevent auto selecting whole branch when user maniputales one of branch levels
get_parent_value_if_empty: true,
attr: "id" // we'll use input id instead of name

如果这不适合您,您可以从事件中启动它,例如更改 keyup 等。

$(document).on('change', '#select', function() {
    $('#nextSelect').val($(this).val());
})

$(document).on('change', '#nextSelect', function() {
    $('#finalInput').val($(this).val());
})

答案 1 :(得分:0)

是的,你是对的Mackan!我看到了&#34;预选&#34;选项,但我最初无法使用它将数据库中的路径转移到javascript,我最终得到了我的&#34; newbie&#34;解决方案匹配语法:

preselect: {'parent_category_id': [0,'2','22']},

PHP

$ category_path来自数据库查询,就像&#34; 0,2,76,140,&#34;

    $path = explode(',', $category_path);
    $preselect="";
    foreach ($path as $value) {
        $int = (int)$value;
        if ($int != 0) $preselect.= "'". $int ."',";
        else $preselect.= $int.","; // have to do this as ZERO in my case has to be without apostrophes '' 
    }
    $preselect = "{'parent_category_id':[".$preselect."]}"

JS

 var presel= <?php echo($preselect); ?>;
 var options = {
        preselect: (presel),
 }

有关更好代码的任何建议吗? 非常感谢!!