Как найти текстовые поля только для чтения с помощью jquery

#javascript #jquery

#javascript #jquery

Вопрос:

Как я могу найти текстовые поля только для чтения в форме .. я проверил это .. но это не работает..

 $('input[readonly="readonly"]').each(function() 
{
$(this).attr('tabindex', '-1');
}
  

Ответ №1:

Это работает для меня, как:

 console.log($('input[readonly="readonly"]'));
  

и

 console.log($('input[readonly]'))
  

посмотрите на эту скрипку


Редактировать:

Проблема с вашим кодом заключается в том, что в нем отсутствует окончание ) . Посмотрите на эту рабочую скрипку:

 $('input[readonly="readonly"]').each(function() 
{
    $(this).attr('tabindex', '-1');
});
  

Что касается вашего комментария, вопрос о readonly динамической настройке, а затем поиске входных данных:

 $('input[name="country"]').attr('readonly', 'readonly');

$('input[readonly="readonly"]').each(function()
{
    $(this).attr('tabindex', '-1');
});
  

Посмотрите, как это работает здесь

Комментарии:

1. Работает ли это, если свойство «только для чтения» задано программно, а не как атрибут непосредственно для элемента HTML?

2. работает второй. я хочу поставить еще одно условие. получить все текстовые поля только для чтения, в которых идентификатор не заканчивается на «-date». Как я могу его включить??

3. Не readonly следует устанавливать / изменять, используя .prop вместо .attr в jQuery 1.6?

4. в этом случае вы должны использовать $('input:not([id$="-date"])') . Если вы хотите, отправьте другой вопрос, чтобы я мог дать вам полный ответ.

Ответ №2:

Вы могли бы сделать это:

 $('input').filter(function() { return !!$(this).prop('readonly'); }).each(function() {
  // ...
});
  

Вы также можете просто проверить свойство в теле обратного вызова «.each()»:

 $('input').each(function() {
  if (!$(this).prop('readonly')) return;
  // ... 
});
  

Ответ №3:

Попробуй

 $('input[readonly]').each(function() 
{
    $(this).attr('tabindex', '-1');
}
  

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

Ответ №4:

http://jsfiddle.net/8aRg8/

 jQuery(function($){
    $('input').each(function() {
        if ($(this).is('[readonly]')) alert(this.id);
    });
});
  

Комментарии:

1. я хочу поставить еще одно условие. получить все текстовые поля только для чтения, в которых идентификатор не заканчивается на «-date». Как я могу его включить??

Ответ №5:

Этого должно быть достаточно, чтобы использовать это в качестве селектора: input[readonly]

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