2012-09-19 62 views
1

我試圖設置一個表單,用戶可以從城市列表中選擇而不是鍵入它。我的問題是第一個選擇是好的,但在第二個選擇,如果我:

點擊相同的輸入 - 選擇記錄+ = 1,所以在第二次啓動「離開」城市時,它會記錄兩次;第三次,3次等。
點擊其他輸入 - 選擇記錄了很多次,它將數據輸入到兩個輸入中。

我很確定這是一個'這個'問題,所以我在控制檯中記錄了這個問題,以便更好地看到它。我知道我可以很容易地製作兩個單獨的列表,並分別引用每一個列表,但我想爲什麼要重複兩次相同的列表。我也不確定標記在語義上是否正確(或者它的語義上是正確的,只寫一次這個列表)。謝謝。

回答

2

似乎與你的$的這個變量的作用域的問題,如果你定義它像一個全局變量,它應該工作:

var $this;   
$('.citylist').hide(); 

$('.depcity, .retcity').on('click', function() { 
    $this = $(this); 
    $('.citylist').show().on('click', 'li', function() { 
     console.log($this); 
     $this.val($(this).html()); 
    }); 
}).blur(function() { 
    $('.citylist').fadeOut(); 

}); 

但是我必須說,你的做法似乎有些奇怪我。我不會更好地使用兩個獨立的選擇元素?如果後來在項目生活中城市列出的分歧是什麼呢?

+0

啊,我覺得這是一個範圍問題,謝謝。你是說我應該爲每個輸入單獨列出一個列表。 「離開」城市列表和「返回」城市列表?這將會更容易處理。 –

+0

我不喜歡使用列表而不是自然選擇元素。使用一個或兩個不同的數據源(這裏是一個列表)完全取決於數據的預先發展。如果你發現未來這兩個名單(離開和到達的城市)分歧,你必須面對一個問題,當你必須適應你當前的做法。 – Bardo

+0

哦,我現在明白了。我會用你的建議更新它。再次感謝你的幫助。 –