Не может обновить текстовую область с JavaScript после записи в него вручную

Я пишу онлайн-приложение, где я сохранил некоторые тексты к базе данных.
Там похожи на 5 "текстовых областей"-s, и 5 "вводит type=text"-s.
Я также реализую поиск, чтобы легко найти и отредактировать записи DB. Новое избранное окно отображено (использование прототипа и ajax), и когда нажатие на любую из его записей ниже формы заполняется (это - та же форма, которая использовалась для добавления новых результатов). Теперь вот то, где проблема возникает....
Если я добавляю новую форму или редактирую кого-либо существующего поля ALL TEXTAREA, которые были изменены, заблокированы или что-то как она (только текстовые области, исходные данные все еще работают)... Они не будут больше повиноваться Javascripts .update, таким образом, они не изменятся, когда я выбираю следующую запись.... ИЛИ ПО КРАЙНЕЙ МЕРЕ ОНИ ПРИВЫЧКА В FireFox (3.5.something). Это хорошо работает в IE, но так как я - пользователь FF и я wan't, это работает там также, я задаюсь вопросом, столкнулся ли кто-то с какими-либо подобными проблемами и решил его легко.
Проблема, кажется, уходит, когда я называю form.reset (), но это портит сгенерированные поля выбора/опции некоторого кода, кроме того, меня wan't данные, чтобы остаться.

Мне похоже, что FF решил, что текст, который я ввел, более важен, чем текст, который JavaScript пытается ввести, таким образом, это переопределяет его..., и я не могу выяснить почему. В этой точке я обвиняю .update (), но я не уверен, как сделать это иначе.
Поля ввода, кажется, имеют проблемы с .update (или он просто не работал на меня), таким образом, я должен был переписать их к .value = (попробовали .value текстовыми областями также, надеясь, что это зафиксировало бы что-либо, печально без пользы).

Так, у кого-либо есть какие-либо подсказки, почему это происходит и как зафиксировать его, не имея необходимость сбрасывать форму на каждом шаге?

13
задан Cœur 16 April 2017 в 08:21
поделиться

2 ответа

.value и .insideHTML, похоже, исправляет проблему

.
3
ответ дан 2 December 2019 в 00:31
поделиться

У меня именно эта проблема. До сих пор я пробовал

$('#addofferlink').click(function(){
    var offer = "#OFFER_"+$('#offer_id').val()+"#";
    $('#message').append(offer);
});

Я тоже пробовал

    $('#addofferlink').click(function(){
    var e = $('#message').html();
    var offer = "#OFFER_"+$('#offer_id').val()+"#";
    $('#message').html(e+offer);
});

Проблема, кажется, в том, что если пользователь набирает в текстовом поле (#message), а затем нажимает на кнопку, чтобы добавить ссылку на предложение, то ничего не отображается. Глядя на источник, используя Firebug, я вижу, что фактический текст, содержащийся в текстовом поле, изменяется, но не отображается на экране.

Похоже, что javascript изменяет html содержимое тега, но браузер хранит текущее набранное содержимое в памяти (я предполагаю) или где-то еще.

Обновление текстовой области с помощью val(e+offer) удалит введенный текст и заменит его ссылкой на предложение, а использование innerHTML = e+offer вообще не работает, не показывая никаких изменений в текстовой области.


Мне удалось это отсортировать!

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

Используя .val() для получения содержимого поля, вы можете затем просто вытащить и обновить содержимое. В итоге,

    $('#addofferlink').click(function(){
    var e = $('#message').val();
    var offer = "#OFFER_"+$('#offer_id').val()+"#";
    $('#message').val(e+offer);
});
1
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: