jQuery Отключить текстовое поле с определенным содержимым

0

У меня есть серия textarea которая по умолчанию должна быть активной, но при содержании определенного текста она должна быть отключена.

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);
 }
);

Можно ли активировать его снова, когда это произойдет?

  • 0
    Можно ли сделать так, чтобы текстовое поле было повторно включено, если текст изменяется
  • 0
    Если он отключен, вы не можете изменить текст.
Показать ещё 2 комментария
Теги:

5 ответов

0
Лучший ответ

Вы можете попробовать это (он отключит textarea при my_ta_ Example 2 в любом textarea которое имеет id начинающийся с my_ta_)

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

Это будет даже соответствовать example 2 из Some text Example 1 but example 2.

Пример здесь.

Обновление. Чтобы изначально проверить текстовый example 2 и disabled его, есть другие (опрошенные) ответы, выберите тот, который вам нравится, но я написал код для проверки textarea когда пользователь пишет в textarea и если он находит example 2(in any case/any where) textarea example 2(in any case/any where) тогда textarea будет отключено.

Обновление. Чтобы снова включить disabled textarea используя значение select

$('[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');
});

Пример здесь.

Обновление: возможно, вы также можете попробовать это (сначала проверить и отключить и снова включить при изменении)

$('textarea[id^="my_ta_"]').prop('disabled', function(){
    return $.trim(this.value.toLowerCase()) == 'example 2'
})
.on('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');
});

Пример здесь.

  • 0
    Большое спасибо. Это работает отлично!
  • 0
    @ DannyR. Thillemann, рад это знать и добро пожаловать :-)
2

Вы можете использовать filter() и отфильтровывать любое значение, которое вам нужно:

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

пример, запрещающий любое текстовое поле, содержащее строку "пример 2" без учета регистра.

FIDDLE

  • 0
    +1 за использование ^
1

Всякий раз, когда вы используете метод getter в наборе оболочки jQuery, он возвращает значение первого элемента набора... он будет игнорировать остальные элементы в наборе...

Также вы устанавливаете значение textarea вместо того, чтобы их сравнивать...

Вам нужно использовать set.prop(), который принимает функцию как параметр

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

Демо: скрипка

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');
    }
});

скрипка

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

Попробуйте вышесказанное. Если у вас есть дополнительные тетары, на которые вы не хотите влиять, просто оберните указанные в родительском элементе и найдите их относительно их родительского

Ещё вопросы

Сообщество Overcoder
Наверх
Меню