2011-02-11 57 views
1

請原諒新手代碼,即時通訊新的。 任何編碼技巧,當然也非常感謝。jQuery - 檢查刷新時選擇值?

這裏的問題:

此代碼似乎很好地工作,如果我第一次加載頁面,美國選擇了和美國是可見的。 如果我然後選擇另一個國家,國家消失,因爲他們應該...

然而,如果我然後點擊刷新按鈕,州變得可見再次,但國家選擇保持它是什麼(不是美國)。

我該如何保護自己?

#stateWrapper { display: block; } 

#country USA is set to "selected" 

$('#country').click(function(){ 
    var selectedValue = $("select").val(); 

    if(selectedValue == 'US') { 
     $('#stateWrapper').attr('style', 'display: block;');    
    }else{ 
     $('#stateWrapper').attr('style', 'display: none;'); 
    } 

    if(selectedValue == 'CA') { 
     $('#provinceWrapper').attr('style', 'display: block;');   
    }else{ 
     $('#provinceWrapper').attr('style', 'display: none;'); 
    } 
}); 

我知道有一個解決辦法是改變了美國從「選擇」,以通用,如「請選擇國家」別的東西。 但我更喜歡用戶不需要選擇美國的便利,當90%的客戶將來自美國。 另外我真的想解決一個問題,而不是一次解決它...

+0

你不需要任何JavaScript。您可以將此屬性`autocomplete =「off」`添加到您的表單中。像這樣的

`。這將重置刷新的所有值。告訴我,如果這有效,我會單獨回答。歡呼聲 – 2011-02-11 16:06:10

回答

1

因爲你的controll被包裝成一個點擊事件。刷新頁面不是點擊事件。

你需要使用你的控制有一個功能

function check_country() 
{ 
    //your code above 
} 

和插入文檔準備打電話

check_country(); 

孤獨,然後你必須給函數綁定到click事件

$('#country').click(function(){check_country();} 

所以現在你的控制功能在頁面加載和點擊時都可以工作

最後你應該有這樣的事情:

處理這個
function check_country() 
{ 
    var selectedValue = $("select").val(); 

    if(selectedValue == 'US') { 
     $('#stateWrapper').attr('style', 'display: block;');    
    }else{ 
     $('#stateWrapper').attr('style', 'display: none;'); 
    } 

    if(selectedValue == 'CA') { 
     $('#provinceWrapper').attr('style', 'display: block;');   
    }else{ 
     $('#provinceWrapper').attr('style', 'display: none;'); 
    } 
} 

$(document).ready(function() 
{ 
    check_country(); 
    $('#country').click(function(){check_country();}); 
}); 
+0

真棒的東西謝謝你!我現在試着把它放在適當的位置。我很難用編程邏輯,希望這能幫助我更進一步。 – Stefan 2011-02-11 20:43:10

0

的一種方法是使用jQuery.ready()方法來執行你的函數在頁面加載時,以及當用戶點擊。首先拉你的代碼放到一個函數定義:

function update_states() { 
    //state updating code goes here 
} 

然後添加以下代碼來調用該函數時,頁面加載或刷新:

$(function() {update_states();}) 

並運行它的時候更新你已經這樣做:

$('#country').click(function() {update_states();}) 

這是否實現你想要做的?

+0

是它的完美,謝謝。非常有幫助的社區,我非常感謝您花時間幫助。 – Stefan 2011-02-11 20:58:18