iT邦幫忙

0

【PHP 的三層連動下拉 Part 2 ???】

  • 分享至 

  • xImage

之前受老鷹大(chingfeng)的幫忙
幫我寫出 jquery 語法的三層下拉
不過該下拉有一個小小問題
就是初始的時候

【第一層】變動後
此時的【第二層】當然跟著變了(算是依據【第一層】變動跟著自動改變的)
但是【第三層】並沒有根據【第二層】而改變
必須要手動去讓【第二層】改變
【第三層】才會變
程式碼如下(由於字數長度限制,就只貼出有關的 html)

<script src="jquery-1.11.3.min.js"></script>
<script>  
    $(function(){ 
		//三層下拉
        $('#center').change(function(){  
            $.post('unit.php',{center:$('#center').val()},function(data){  
                var loan = data.length;  
                var center_html = '';  
                for(var i = 0;i<loan;i++){  
                    center_html += '<option value="'+data[i]+'">'+data[i]+'</option>';  
                }  
                $('#unit').html(center_html);  
  
                $('#unit').change(function(){  
                    $.post('name.php',{unit:$('#unit').val(),center:$('#center').val()},function(data){  
                        var loan = data.length;  
                        var name_html = '';  
                        for(var i = 0;i<loan;i++){  
                            name_html += '<option value="'+data[i].id+'">'+data[i].name+'</option>';  
                        }
						$('#name').attr("size",loan);
						$('#name').attr("multiple","multiple");
                        $('#name').html(name_html);  
                    },'json');  
                });  
  
  
            },'json');  
  
        });
		//兩層下拉
		$('#district').change(function(){  
            $.post('machine.php',{district:$('#district').val()},function(data){  
                var loan = data.length;  
                var district_html = '';  
                for(var i = 0;i<loan;i++){  
                    district_html += '<option value="'+data[i].id+'">'+data[i].machine+'</option>';  
                }
				$('#machine').attr("size",loan);
				$('#machine').attr("multiple","multiple");
                $('#machine').html(district_html);  
             },'json');  
  
        });
    });
</script>

謝謝大家的幫忙
^_^

看更多先前的討論...收起先前的討論...
外獅佬 iT邦大師 1 級 ‧ 2015-08-11 17:06:04 檢舉
跨無...
提供的資訊會不會也太過零散了些...
通常第一層->第二層做得出來
第二層->第三層應該不是問題才對
外獅佬 iT邦大師 1 級 ‧ 2015-08-11 17:07:27 檢舉

$('#unit').change(function()


這個事件,為什麼是包含在$('#center').change事件中?
你把它拉出來,放到$(function(){});區塊裡頭,問題應該就解了

晚點老鷹來改一下好了
外獅佬 iT邦大師 1 級 ‧ 2015-08-11 17:28:41 檢舉
該不會是全本照抄的吧落寞
外獅佬 iT邦大師 1 級 ‧ 2015-08-11 17:33:55 檢舉
授人以魚,不如授人以漁啊
有跟他提過一下作法,不過好像還是不行,
所以老鷹再寫一個範例好了,用範例還是要改的XD
weiclin iT邦高手 4 級 ‧ 2015-08-11 22:22:14 檢舉
這就是傳說中的靠網路寫程式
汗
weiclin提到:
這就是傳說中的靠網路寫程式

也還好啦!這個小範例可以讓他自己去摸索
外獅佬 iT邦大師 1 級 ‧ 2015-08-12 09:53:19 檢舉
老闆交辦要改成四層的選單...
那個還好的老鷹...下班前交出一個四層的互動選單出來
逃跑
wiselou提到:
老闆交辦要改成四層的選單...
那個還好的老鷹...下班前交出一個四層的互動選單出來

先跑再說逃跑
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

4
老鷹(eagle)
iT邦高手 1 級 ‧ 2015-08-11 22:12:25
最佳解答

我用舊的範例給你看,你在自己摸索研究一下
a.php

<pre class="c" name="code">
 <?php  
    if($_POST['type'] == 'A'){  
        $a = [1,2,3,4,5,9,7];  
    }else{  
        $a = [8,9,10,11,12,13,14];  
    }  
    echo json_encode($a);  

b.php

<pre class="c" name="code">    
<?php  
    if($_POST['num'] == 1){  
        echo json_encode(['ken']);  
    }elseif($_POST['num'] == 2){  
        echo json_encode(['joe','ted']);  
    }else{  
        echo json_encode(['sam']);  
    }  

c.php

<pre class="c" name="code">      
      
        <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>  
      
      
    <select name="type" id="type">  
        <option value="A">A</option>  
        <option value="B">B</option>  
    </select>  
    <select name="num" id="num">  
      
    </select>  
      
    <select name="name" id="name">  
      
    </select>  
      
        <script>  
        $(function(){  
            $('#type').change(function(){  
                $.post('a.php',{type:$('#type').val()},function(data){  
                    var loan = data.length;  
                    var type_html = '';  
                    for(var i = 0;i<loan;i++){  
                        type_html += '<option value="'+data[i]+'">'+data[i]+'</option>';  
                    }  
                    $('#num').html(type_html);
                    
                    $.post('b.php',{num:$('#num').val()},function(data){  
                            var loan = data.length;  
                            var name_html = '';  
                            for(var i = 0;i<loan;i++){  
                                name_html += '<option value="'+data[i]+'">'+data[i]+'</option>';  
                            }  
                            $('#name').html(name_html);  
                        },'json');      
      
                    $('#num').change(function(){  
                        $.post('b.php',{num:$('#num').val()},function(data){  
                            var loan = data.length;  
                            var name_html = '';  
                            for(var i = 0;i<loan;i++){  
                                name_html += '<option value="'+data[i]+'">'+data[i]+'</option>';  
                            }  
                            $('#name').html(name_html);  
                        },'json');  
                    });  
      
      
                },'json');  
      
            });  
        });  
    </script>  
      

我要發表回答

立即登入回答