2014-01-10 55 views
0

已經搜索了幾天,這是驅動我瘋狂。 我是一個半新手,當談到JS時,請原諒下面的醜陋腳本。JS - Onclick動態添加選項的處理程序在選擇

我有一個表單,我選擇了一個選項,然後根據選擇它決定了以下可用的答案。

例子和目標: 選擇國家:加拿大(工作)< -onclick =()函數來填補省內選擇框 選擇:安大略省(工作)< -dynamically添加的選項,的onclick =()函數來添加選項到縣是問題所在。我無法將特定的onclick函數添加到選項列表中的每個項目。 選擇縣:

function Province() 
{ 
    var Province= document.getElementById("prov"); 
    Province.hidden = false; //unhiding the province box 
    Province.options[Province.options.length] = new Option('Ontario', 'ont'); 
    Province.options[Province.options.length] = new Option('Manitoba', 'man'); 
     onchange = function() 
     { 
      var County= document.getElementById("county"); 
      County.hidden = false; // unhiding the county box 
      Province.disabled = true; //disabling the province box 
     } 
} 

它說新的選擇我想補充.onclick後右(cityfunction()),但不起作用。 任何幫助將非常感激。 (我知道我可以使用更簡單的方法將元素添加到我的列表中 - 再次,菜鳥的事情)。如果.add與onclick事件一起工作,我會愉快地翻轉過來。

+0

任何機會,你可以創建一個jsFiddle供我們使用? –

+0

那麼你不能正常選擇 - >選項onclick選項 –

+1

這是什麼'onchange'全局變量? – elclanrs

回答

0

那麼你不能綁定onclick的選項,並採取它的價值,至少不是正常的選擇 - >選項。

你有幾個選擇:1.創建一個外部庫,創建一個假選擇,選項是<li> s。

2.修改並創建一個可以動態添加鍵值的類。然後改變 - >取出價值並處理課堂。我個人很喜歡http://gregfranko.com/jquery.selectBoxIt.js/其不錯。

但是,如果您完美的更復雜的方式:

onChangeClass = function(){ 
    this.options = [ 
      {"value" : "something", actionToTake: function(){/* .... */}} 
    ]; 
    this.doCall = function(selected){ 
     $.each(this.options,function(index,value){ 
       if(selected == value.value){ 
        value.actionToTake(); 
       } 
     }); 
    } 
} 

var somVar = new onChangeClass(); 
somVar.options.push({"value" : "something2", actionToTake: function(){/* .... */}}); 
somVar.doCall(); 
+0

這使用jQuery(不是嗎?)。我們不知道jQuery是否可用。 – Rolf

0

要添加一個onclick處理程序來動態添加的內容,這樣的事情通常應該工作:

Province.options[Province.options.length] = new Option('Manitoba', 'man'); 
Province.options[Province.options.length].onclick = function(e) { 
    // event handling code here 
} 

但前面已經提到一個人,我依稀記得自己遇到這樣的問題;可能無法在HTML選擇元素內的選項元素上添加onclick事件處理程序。搜索帶來類似的問題...

在這種情況下,我會做的是嘗試將處理程序綁定到select onchange事件(onclick select元素可能工作太...)。 Province.onchange = function(e){},在這裏面,你可以訪問變量,比如當前選擇的選項......它確實使事情變得更加複雜。

這裏是計算器一個看似類似的問題:
getting an onclick event to a select option using js

這是試圖提供一種解決方法一個小型圖書館:
http://code.google.com/p/expandselect/

搜索HTML選擇選項的onclick(在谷歌)會帶來其他類似的問題。

希望能幫到...