2011-02-11 75 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