2013-05-16 34 views
0

我昨天发布了这个问题:jQuery live check input changes - 我得到了我的答案。下拉设置选中状态和启用/禁用提交按钮

现在我很好奇,如果我有下拉菜单,复选框和单选按钮,我如何跟踪他们的变化。

这是国家当前代码:

<select id="country-list" name="countries"> 
    <option value="xx" selected="">Worldwide</option> 
    <option value="in">India</option> 
    <option value="il">Israel</option> 
    <option value="ru">Russia</option> 
    <option value="us">United States</option> 
</select> 

其余的是在此的jsfiddle:http://jsfiddle.net/XeG5u/

谢谢!

编辑:我的目标, enter image description here

+0

在图中,只要我切换到默认值,该按钮就被禁用。但是,如果我改变其他东西,它会被启用。 –

回答

0

我刚解决了我自己的问题。使用find()并在循环比较之前获取默认值非常简单!谢谢你们!

这奏效了:

var current = $("#country-list option[selected]").val(); 

而且未来执行。如果() - 声明......这是多么简单,它是...

1

好像你已经做了很多,以启用button..I觉得你可以处理大部分用一个简单的.change()事件。

$("#country-list").change(function() { 
    if (this.value == "xx") { 
     $("#submit-data").prop("disabled", true); 
    } else { 
     $("#submit-data").prop("disabled", false); 
    } 
}); 

演示:http://jsfiddle.net/tymeJV/XeG5u/1/

每次下拉的变化,这个事件触发。您可以存储选定的值(可在此函数中以this.value访问)并执行所需的逻辑。

0

为此,您可以使用jQuery的.on('change', ...)事件处理程序:

$('body').on('change', 'select#country-list', function() { 
    // When the selected option is changed, this function will be entered 
}); 

JSFiddle example

+0

比方说:以前美国被设置为默认,我回去后我转到俄罗斯,按钮必须启用,但如果我没有点击提交,回去换美国,因为我刚刚有第二次去,我希望按钮被禁用,因为我从未真正改变过我的选择,因为它保持不变。 Twitter的国家名单选择就是一个很好的例子。 –

+0

为此,您可以将选定的国家作为变量进行存储。我更新了我的JSFiddle示例:http://jsfiddle.net/PsCdd/2/。如果您选择了全球以外的任何其他功能,则该按钮处于启用状态,否则它将被禁用 –

0

我将大大简化了这一点:

var button = $('#submit-data'); 
$('#country-list').data('selected', $("#country-list option:selected").val()).change(function() { 
    button.prop('disabled', ($(this).find('option:selected').val() === $(this).data('selected'))); 
});