jQuery禁用带有特定内容的textarea

时间:2013-10-23 02:11:16

标签: jquery html

我有一系列textarea s默认情况下应该处于活动状态,但是当包含某个文本时,它应该被禁用。

HTML

<textarea id="my_ta_1">Example 1</textarea>
<textarea id="my_ta_2">Example 2</textarea>
<textarea id="my_ta_3">Example 3</textarea>

jQuery(尝试在textarea内禁用Example 2。)

if (!$('[id*="my_ta_"]').val(Example 2))
 {$(this).attr("disabled","disabled");}

有可能吗?

我在附近吗? =)

JSFiddle

我正在使用以下jQuery更改为textarea#my_ta_2

的文本
$('select').change( function()
 {var text1 = $('select option:selected').val();
  $('#my_ta_2').html(text1);
 }
);

当发生这种情况时,是否可以再次激活它?

5 个答案:

答案 0 :(得分:2)

您可以使用filter()并过滤掉您想要的任何值:

$('textarea[id^="my_ta_"]').filter(function() {
    return this.value.toLowerCase().indexOf('example 2') != -1;
}).prop('disabled', true);

禁用包含字符串'example 2'不区分大小写的任何textarea的示例。

FIDDLE

答案 1 :(得分:1)

每当你在jQuery包装器集上使用getter方法时,它将返回set的第一个元素的值......它将忽略集合中的其余元素......

您也可以设置textarea的值而不是让它们进行比较......

您需要使用将函数作为参数的.prop() setter

$('textarea[id*="my_ta_"]').prop('disabled', function(){
    return $.trim(this.value) == 'Example 2'
})

演示:Fiddle

答案 2 :(得分:0)

$("textarea").each(function(){
  if($(this).text() !== "Example 2"){
     $(this).attr("disabled","disabled")
  }
});

尝试以上方法。如果您有其他不希望受影响的tetareas,只需将指定的tetare包装在父级中,并相对于其父级找到它们

答案 3 :(得分:0)

您可以尝试此操作(当您在textarea开始Example 2textarea输入id时,它会停用my_ta_ < / p>

$('[id^="my_ta_"]').on('keyup', function(){
    var txt = $(this).val();
    if(txt.match(/Example 2/)){
        $(this).prop('disabled', 1);
    }
});

它甚至会匹配example 2的{​​{1}}。

Example Here.

更新:要初步检查文字Some text Example 1 but example 2并将其设为example 2还有其他(已投票)答案,选择一个您喜欢的但我写了代码要在用户在disabled中写入时检查textarea,如果找到textarea,则example 2(in any case/any where)将被停用。

更新 要使用textarea值重新启用disabled textarea

select

Example Here.

更新:也许您也可以尝试一下(最初检查并禁用并再次启用更改)

$('[id^="my_ta_"]').on('keyup change', function(){
    var txt = $(this).val();
    if(txt.match(/Example 2/i)){
        $(this).prop('disabled', 1);
    }
    else $(this).prop('disabled', 0);
});

// works on (re-enables) my_ta_2
$('select').on('change', function(){
    var text1 = $(this).val();
    $('#my_ta_2').val(text1).trigger('change');
});

Example here.

答案 4 :(得分:0)

你走在正确的轨道上,这是一种方法:

var text_to_match = "Example 2";

$('[id*="my_ta_"]').each(function(){
    var cur_value = $(this).val();
    if(cur_value === text_to_match){
        $(this).attr('disabled', 'disabled');
    }
});

Fiddle

相关问题