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