2009-11-27 114 views
0

我有一個對象名爲update的方法生成一個整數,如果它不同於region變量的值,則將其分配給region。如果整數與region相同,則用戶從<select>下拉菜單中選擇一個值。從函數內部獲取選擇下拉列表的值

我想弄清楚如何獲得<select>的值到函數中。

<form> 

選擇一個區域 東北 東南亞 北環 中南 中原 西北 西南

//Destination object 
var destination= function(spec) { 
    spec= spec||{}; 

    var that= {}; 




that.update= function(newDest) { 
    function roll() { 
    return Math.floor(Math.random()*6)+Math.floor(Math.random()*6)+Math.floor(Math.random()*2)*11; 
    }; 
    newDest= newDest||{}; 

    //newDest is event 
    newRegion=newDest.target.value; 

    //newDest is empty object 
    newRegion= newDest.region||codes[roll()][0]; 

    if (spec.region=== newRegion) { 
    //ask user for new region 
    //how do i use event handlers here? 
    }; 

    //set new region 
    spec.region= newRegion; 

    //set new city 
    spec.city= newDest.city||codes[roll()][newRegion]; 
    }; 

    return that; 
}; 

回答

0

除非你使用promptconformalert,請求用戶輸入將始終是異步的。考慮到這一點,您可以像處理AJAX請求一樣處理這種交互,以便事件處理程序變成AJAX響應處理程序的同義詞。

if (spec.region === newRegion) { 
    // 1. Display a <select> in the current context or 
    // launch some sort of dialog containing the <select>. 
    // 2. Attach an event handler to that <select> that is closed 
    // over in this scope, or is a method of `destination` and 
    // update `spec.region` and `spec.city` 
} else { 
    //set new region 
    spec.region= newRegion; 

    //set new city 
    spec.city= newDest.city||codes[roll()][newRegion]; 
}