Я пишу онлайн-приложение, где я сохранил некоторые тексты к базе данных.
Там похожи на 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 текстовыми областями также, надеясь, что это зафиксировало бы что-либо, печально без пользы).
Так, у кого-либо есть какие-либо подсказки, почему это происходит и как зафиксировать его, не имея необходимость сбрасывать форму на каждом шаге?
У меня именно эта проблема. До сих пор я пробовал
$('#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);
});