摘要:[PHP] 自動選擇郵遞區號
第一篇文章...很高興在IE可以這麼順利的編輯
自動選擇郵遞區號,這鬼在寫PHP個人資料的時候還挺常遇到的...
依照目前我所懂的PHP和JavaScript的程度,還勉勉強強可以看著別人的範例試寫出來...參考網站請看網誌最下面~
根據"Incredible C Sharp"這個部落格的作者willy0080所簡化的程式碼,為了達到POST的功能,我加以修正了一些東西。
在我想要的東西裡,我需要的是組合縣市、郵遞區名、地址並且另外記錄郵遞區號,將這兩樣東西POST到另一張網頁做記錄。
因此我根據"forum.interfly.net"這個論壇的這篇文章charles所發表的程式邏輯,加以修正了willy0800的程式碼,以達到資料可以順利POST的功能。
willy0800說:
1 <option value="25">嘉義市</option>
2 </select>
3 <select id="Zone" runat="server" onchange="changeZone()"></select>
4 <input id="Zip" runat="server" type="text" disabled="disabled" />
2 </select>
3 <select id="Zone" runat="server" onchange="changeZone()"></select>
4 <input id="Zip" runat="server" type="text" disabled="disabled" />
而我修改後:
1 <option value="嘉義市">嘉義市</option>
2 </select>
3 <select id="zipName1" name="zipName1" onchange="changeZone()"></select>
4 <input id="zipNumber1" name="zipNumber1" size="3" type="text" readonly="readonly"/>
5 <input name="address1" type="text" size="30" />
2 </select>
3 <select id="zipName1" name="zipName1" onchange="changeZone()"></select>
4 <input id="zipNumber1" name="zipNumber1" size="3" type="text" readonly="readonly"/>
5 <input name="address1" type="text" size="30" />
然而在JavaScript裡我也做了些修正:
willy0800說:
function changeCity() {
document.getElementById("Zone").length=0; //先將鄉鎮市的下拉選單清除
var City=document.getElementById("City").selectedIndex; //取得被選取的縣市的索引
var ZoneLength=Zone[City].length; //根據縣市索引得知相對應鄉鎮市群組的陣列長度
for(var i=0; i<ZoneLength; i++){ //塞值
var newOpt=new Option(Zone[City][i], i, true, false);
document.getElementById("Zone").options.add(newOpt);
}
changeZone();
}
document.getElementById("Zone").length=0; //先將鄉鎮市的下拉選單清除
var City=document.getElementById("City").selectedIndex; //取得被選取的縣市的索引
var ZoneLength=Zone[City].length; //根據縣市索引得知相對應鄉鎮市群組的陣列長度
for(var i=0; i<ZoneLength; i++){ //塞值
var newOpt=new Option(Zone[City][i], i, true, false);
document.getElementById("Zone").options.add(newOpt);
}
changeZone();
}
修正後:
01 function changeCity2() {
02 document.getElementById("zipName2").length=0; //先將鄉鎮市的下拉選單清除
03 var City=document.getElementById("city2").selectedIndex; //取得被選取的縣市的索引
04 var ZoneLength=Zone[City].length; //根據縣市索引得知相對應鄉鎮市群組的陣列長度
05 for(var i=0; i<ZoneLength; i++) { //塞值
06 var newOpt=new Option(Zone[City][i], Zone[City][i]);
07 document.getElementById("zipName2").options.add(newOpt);
08 }
09 changeZone2();
10 }
02 document.getElementById("zipName2").length=0; //先將鄉鎮市的下拉選單清除
03 var City=document.getElementById("city2").selectedIndex; //取得被選取的縣市的索引
04 var ZoneLength=Zone[City].length; //根據縣市索引得知相對應鄉鎮市群組的陣列長度
05 for(var i=0; i<ZoneLength; i++) { //塞值
06 var newOpt=new Option(Zone[City][i], Zone[City][i]);
07 document.getElementById("zipName2").options.add(newOpt);
08 }
09 changeZone2();
10 }
不一樣的地方就在於我直接修改第六行的程式碼,並且直接傳入相對應的名稱。是我的功力還不足,所以只能用直覺的方式設計這個功能。
根據上述的做法,就可以修正好POST的問題...
POST的結果為:嘉義市、全區、600
基本上這樣就可以了...