1

我有一个输入字段(源语言),当我单击其中一种源语言时,我想要它,但具有相同文本的目标语言被禁用

到目前为止我已经这样做了,但是当我单击源语言时它会一直禁用目标语言

我每次都想重置它..不要总是听事件

这是演示http://jsfiddle.net/ezNxU/

// change the target language according to the source language 
$('#source').change(function () {

var option_source = $('select#source option:selected').text();

$('select#target option').each(function () {
    if ($(this).text() == option_source) $(this).prop("disabled", true);
    console.log($(this).text());
});

});
4

4 回答 4

2

要重置 disabled 属性,请将其应用于所有选项,并使用函数调用将其设置为 true / false

$('#source').on('change', function() {
    var self = this;
    $('#target option').prop('disabled', function() {
        return this.value == self.value;
    });
});

小提琴

于 2013-03-27T13:13:34.870 回答
1

尝试这个:

$('#source').change(function () {
    var option_source = $('select#source option:selected').text();
    $('select#target option').each(function () {
        $(this).prop("disabled", ($(this).text() == option_source));
    });
});

演示

于 2013-03-27T13:10:57.000 回答
0

用它来清除所有

$('select#target option').prop("disabled",false); 

所以对于你的代码:小提琴

 $('#source').change(function () {

            var option_source = $('select#source option:selected').text();
                $('select#target option').prop("disabled",false);
            $('select#target option').each(function () {

                if ($(this).text() == option_source) $(this).prop("disabled", true);
                console.log($(this).text());
            });
        });
于 2013-03-27T13:11:36.590 回答
0

只需在更改事件上删除禁用属性...这将删除所有选项的禁用形式,稍后您的代码将添加它...

尝试这个

 $('#source').change(function () {
   $('select#target option').prop("disabled", false); //<-- add this line
   .....

在这里摆弄

于 2013-03-27T13:11:58.317 回答