2009-12-18 2 views
8

Я пишу онлайн-приложение, где я сохраняю некоторые тексты в базе данных.
Есть как 5 "textarea" -s и 5 "input type = text" -s.
Я также осуществляю поиск, чтобы легко находить и редактировать записи БД. Появится новое окно выбора (используя прототип и ajax), и при нажатии на любую из его записей заполняется форма ниже (это та же форма, которая использовалась для добавления новых результатов). Теперь вот где возникает проблема ....
Если я добавлю новую форму или отредактирую любое существующее одно поле ALL TEXTAREA, которое было изменено, заблокировано или что-то в этом роде (только текстовые поля, входы все еще работают) ... больше не будут подчиняться Javascripts. update, поэтому они не меняются, когда я выбираю следующую запись .... ИЛИ ПО МЕНЬШЕМУ ОНИ В ОЖИДАНИИ FireFox (3.5.something). Он отлично работает в IE, но поскольку я являюсь пользователем FF, и я не работаю там, я также задаюсь вопросом, не сталкивался ли кто-либо с подобными проблемами и не решался ли он с легкостью.
Проблема, кажется, исчезает, когда я вызываю form.reset(), но это испортит некоторые генерируемые кодом поля select/option, кроме того, что я не буду хранить данные.Невозможно обновить textarea с помощью javascript после записи вручную

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

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

+0

Можете ли вы предоставить нам некоторый код для просмотра? – Gausie

+0

больше не нужно, проблема была с .update() ... я попробовал innerHTML, и он работал хорошо, просто для ударов я снова попытался .value, и это сработало внезапно ... Я понятия не имею, что произошло вчера (когда я провел весь день на этом), что он не хотел работать как он (я, возможно, использовал .text вместо .value, или была некоторая ошибка в PHPs iduno) В любом случае вам жаль беспокоить вас все впустую – RedFury

+0

Я думаю, вы должны отправить ответ на свой вопрос (просто сказав выше), а затем проверить его, поэтому этот вопрос можно удалить из очереди без ответа – machineghost

ответ

2

.значение и.innerHTML, казался, решить эту проблему

0

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

$('#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 + вообще не работает, показывая изменения в текстовом поле.


Мне удалось разобраться в этом!

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

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

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

Я исправил эту странную проблему просто:

document.forms[0].text_area_name.value = "STUFF"; 

Даже после изменения текстового поля скрипта будет перезаписывать.

innerHTML не работает для меня после изменения текстового поля.

5

У меня была эта проблема. Когда HTML является разбор для объекта DOM, содержание textarea является innetHTML из <textarea>

<textarea cols="10" rows="10">Content of textarea</textarea> 

document.getElementByTagName('textarea').innerHTML Значения и document.getElementByTagName('textarea').value возвращает это же значение Content of textarea

Но после того, как объект загрузки DOM, изменяя innerHTML значение не изменяется содержание textarea коробка. Решение для его изменения изменяет поле value.

document.getElementByTagName('textarea').value="New content of textarea"; 

или в JQuery

$("textarea").val("New content of textarea"); 
0

Иногда вы можете отобразить в текстовое поле, определенную строку и пусть пользователю увидеть, что это такое, то, возможно, внести в него изменения; но, вы хотите, чтобы позволили им увидеть, что такое исходный текст. Текстуры довольно громоздки, , но даже ручное изменение отредактированного текста можно изменить с помощью этой настройки.

<button id="ShowNOWxItmDscptn" onClick="EditItmDesc(1)">What is it now?</button> 
<button id="OpnTAxWriteNewEdit" onClick="EditItmDesc(2)">Write/Edit</button> 
<textarea id="RUBYxDescribe" max="500" width="75" placeholder="Magic"> </textarea> 

// a global variable: 
// UVarDescriptionTxt = ("This is the first line.\r\nSecond line!"); 

function EditItmDesc(x){ 
    console.log("*x* = "+x+"."); 
    console.log("Text to reset : "+UVarDescriptionTxt+"."); 

    var InnyShow = document.getElementById("RUBYxDescribe"); 
    InnyShow.value = UVarDescriptionTxt; 

    if(x == 1) { 
     InnyShow.innerHTML = ""; 
     InnyShow.textContent = ""; 
     InnyShow.innerHTML = UVarDescriptionTxt; 
    } 

    if(x == 2){ 
     InnyShow.value = ""; 
    } 
} 

Вышеупомянутая структура решена этой проблемой для меня.

Смежные вопросы