#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Javascript:
function editQuestion() {
$("body").on("click", ".edit_question", function(event) {
$(this).closest("form").find("textarea").text("sample text");
event.preventDefault();
});
}
$(document).ready(function() {
editQuestion();
});
HTML:
<form>
<textarea>ormar</textarea>
<div class="actions">
<a href="#" class="edit_question">Cancel</a>
</div>
</form>
При запуске функции, нажав на .edit_question
ссылку, все работает так, как ожидалось, в первый раз.
Но нажатие несколько раз (после ручного удаления содержимого текстовой области) ничего не делает, почему это?
Комментарии:
1. Где находится элемент with
.edit_question
?2. @shaunakde Прошу прощения, опечатка в вопросе. Теперь исправлено. Проблема все та же.
Ответ №1:
.text()
изменяет только начальное значение текстовой области, поскольку начальное значение считывается из content ( <textarea>Initial value</textarea>
) элемента.
После изменения значения текущее значение сохраняется в value
свойстве элемента DOM. Изменение начального значения после изменения текстовой области не имеет никакого эффекта.
Вот почему вы должны использовать .val()
intead of .text()
.
Комментарии:
1. @sudharsan: Не для меня. Сравнить jsfiddle.net/ktPe3 с jsfiddle.net/ktPe3/1 . Измените значение, затем щелкните ссылку. И тоже все отрицательные отзывы, может быть, вам следует запустить код самостоятельно, прежде чем делать поспешные выводы.
2. Снова .text() работает так же, как .val() в вашей скрипке. По-прежнему нет разницы между .val() и .text()
3. @sudharsan: Вы изменили значение перед тем, как перейти по ссылке, да?
4. @sudharsan нет, они не
Ответ №2:
Обновленная демонстрация сравнивается с исходной демонстрацией
Использовать .val()
вместо .text()
в случае ввода.
Проверьте это,
$(document).ready(function () {
$(document).on("click", ".edit_question", function (event) {
$(this).closest("form").find("textarea").val('sample text');
event.preventDefault();
});
});
Примечание: метод .text() нельзя использовать для ввода формы или скриптов.
Ответ №3:
Попробуйте использовать метод .val() вместо .text() для текстовой области
Со страницы документации: метод .text() нельзя использовать для ввода формы или скриптов. Чтобы задать или получить текстовое значение элементов ввода или текстовой области, используйте метод .val() . Чтобы получить значение элемента script, используйте метод .html() .
ссылка: http://api.jquery.com/text/