jQuery AutoResize Breaks Form Vailation для Textareas
-
30-09-2019 - |
Вопрос
Вот фрагмент jQuery:
$(document).ready(function() {
$('textarea').autoResize();
$('#submitSurvey').click(function() {
- пропуская несколько строк -
$("input[id$='Buggy']:radio:checked").each(function() {// If any radio buttons are marked "Buggy" and no comment is left, require comment
var parent = $(this).parent().get(0);// parent element of the radio button
var nextCommentDiv = $(parent).nextAll('.comments').get(0);
var txtarea = $(nextCommentDiv).children('.itemComment').get(0);// comment for the radio button marked "Buggy"
var surroundingDiv = $(parent).parent().get(0);
var heading = $(surroundingDiv).prev();// section title
if(txtarea.value == '' || txtarea.value == 'Type comments here') {
$(txtarea).addClass('invalid');
$(heading).addClass('redtext');
valid = false;
}
});
});
});
Вот фрагмент HTML-кода:
<div class="subQ">Question 1</div>
<div class="ratings">
<input type="radio" name="item1" id="item1Works" value="Works" /><label for="item1Works"> Works </label>
<input type="radio" name="item1" id="item1Buggy" value="Buggy" /><label for="item1Buggy"> Buggy </label>
<input type="radio" name="item1" id="item1na" value="Not Tested" /><label for="item1na"> Didn't Test</label>
</div><br />
<div class="subQ">Question 2</div>
<div class="ratings">
<input type="radio" name="item2" id="item2Works" value="Works" /><label for="item2Works"> Works </label>
<input type="radio" name="item2" id="item2Buggy" value="Buggy" /><label for="item2Buggy"> Buggy </label>
<input type="radio" name="item2" id="item2na" value="Not Tested" /><label for="item2na"> Didn't Test</label>
</div><br />
<div class="subQ">Question 3</div>
<div class="ratings">
<input type="radio" name="item3" id="item3Works" value="Works" /><label for="item3Works"> Works </label>
<input type="radio" name="item3" id="item3Buggy" value="Buggy" /><label for="item3Buggy"> Buggy </label>
<input type="radio" name="item3" id="item3na" value="Not Tested" /><label for="item3na"> Didn't Test</label>
</div><br />
<div class="comments">
<textarea class="itemComment" name="itemsComment" id="itemsComment" rows="1">Type comments here</textarea>
</div>
Обратите внимание, что в группе могут быть несколько вопросов только с одним полем комментариев. Валидация проверяет группу для любых переключаемых кнопок, помеченных «багги», и если она найдет какую-либо, то он ставит красную границу вокруг поля комментариев, чтобы потребовать, чтобы пользователь прокомментировал баггискую область (форма предназначена для бета-тестеров на рабочем столе. ).
По какой-то причине, когда я добавляю autoRoseize всем моим текстую, строку $ (txtarea) .adddlass («неверный») в моей проверке больше не работает (но следующая строка $ (заголовок) .addlass ('RedText ') работает). Я не получаю никаких ошибок в Firefox или Firebug. Я уверен, что мой код немного неуклюже, я новичок в jQuery, поэтому многие селекторы Traversal - это просто «что работают».
Вот ссылка на AutoResize jQuery Plugin.
Какие-либо предложения?
Я новичок в JavaScript и jQuery, так что не давай мне слишком трудно во время моего любительского кода :)
Решение
Там не было много ввода, поэтому я продолжал искать другое решение, и я считаю, что нашел приемлемый. То плагин Smartarea Это меньший, более простой плагин, который делает по существу то же самое, хотя он по общему признанию, не выглядит как приятно (Textareas не анимирует, а прокрутки стержней вспышки включения и выключения, как вы, если вы явно не установили свойство переполнения CSS для ' скрытый'). Однако для моих нужд он делает трюк и мою проверку формы все еще работает.
Я уверен, что я мог бы добавить в код, чтобы оживить его и обрабатывать свойство переполнения, но «если это не сломается ...»
Опять же, любые комментарии по этому времени приветствуются, так как я всегда хочу узнать больше (тем более, что я на самом деле не решил проблему, а просто нашел обходной путь).