Как получить значение из текстовой области с помощью javascript?

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Что ж, этот вопрос может показаться похожим на вопросы, которые легко найти в Google, но по какой-то причине все существующие решения у меня не сработали. Все, что я хочу сделать, это проверить, есть ли текст внутри текстовой области.

Фрагмент JS:

 var PrzedDzier = document.getElementById('ctl00_m_g_87871370_ce46_4f47_b1eb_614d0106535d_ff105_1_ctl00_ctl00_TextField');   
var a = PrzedDzier.val();
if(a == "")
{
  alert('FU');
  result = false;
}
  

HTML baby:

 <textarea dir="none" class="ms-long" title="PDzier" id="ctl00_m_g_87871370_ce46_4f47_b1eb_614d0106535d_ff105_1_ctl00_ctl00_TextField" cols="20" rows="2" name="ctl00$m$g_87871370_ce46_4f47_b1eb_614d0106535d$ff105_1$ctl00$ctl00$TextField"></textarea>
  

Отладчик (Firebug) перестает работать на var a = PrzedDzier.val(); поэтому я предполагаю, что что-то не так с val() методом…

Ответ №1:

Вы извлекли объект как объект JS, а не как объект jQuery. Вам нужно использовать селектор идентификаторов jQuery для извлечения объекта jQuery:

 var PrzedDzier = $("#ctl00_m_g_87871370_ce46_4f47_b1eb_614d0106535d_ff105_1_ctl00_ctl00_TextField");
var a = PrzedDzier.val();
if(a == "")
{
  alert('FU');
  result = false;
}
  

Если вы хотите получить доступ к тексту, используя чистый JS, просто используйте value свойство:

 PrzedDzier = document.getElementById('ctl00_m_g_87871370_ce46_4f47_b1eb_614d0106535d_ff105_1_ctl00_ctl00_TextField');   
var a = PrzedDzier.value;
if(a == "")
{
  alert('FU');
  result = false;
}
  

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

1. или используйте innerHTML в JS object для textarea

2. @AshwiniDhekane, верно, но в OP указано, что они хотят использовать .val() метод. Я обновлю сообщение, чтобы показать оба.

3. @JamesHill Вы должны использовать, .value потому .innerHTML что это полный беспорядок. Разумеется, оба варианта будут работать.

4. На самом деле я не JS-программист, большое спасибо за разъяснение 😉 Теперь работает хорошо. Приветствия!

5. @JamesHill, @AshwiniDhekane, @Amaan: Никогда не используйте innerHTML для текстовой области. Оно не синхронизируется с фактическим содержимым текстовой области. value это единственное свойство, которое работает . Смотрите jsfiddle.net/5kA52

Ответ №2:

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

 $("#ctl00_m_g_87871370_ce46_4f47_b1eb_614d0106535d_ff105_1_ctl00_ctl00_TextField").val();
  

Но обычно получение элемента с использованием его идентификатора времени выполнения более подвержено ошибкам (если есть вероятность, что элемент будет перемещен, что приведет к изменению идентификатора времени выполнения), в противном случае вы вполне можете использовать приведенный выше код.

Ответ №3:

Я считаю, что использовать strlen лучше, чем сравнивать с «», потому что strlen намного быстрее и «» занимает 6 байт оперативной памяти. просто сообщаю вам другой способ

 var j = document.getElementById('idoftextbox').value;
 if (strlen(j) == 0) 
  {
    alert('FU');
    return false;
  }