Текст зашифровывается при вставке через метод jquery.html()

На веб-странице, которую я делаю, есть таблица, в которой, нажав на каждую строку, вы можете изменить ее. Это делается путем замены содержимого каждой ячейки полем ввода, содержащим относительное значение. Чтобы позволить пользователю отменить внесенные изменения, я сохраняю содержимое всей строки таблицы перед выполнением подстановки, которую затем использую для создания новой строки html для вставки в строку таблицы (в основном, я просто помещаю ее в функцию вызов, который затем вызывается при нажатии кнопки для отмены изменений). если я попытаюсь отобразить его с помощью предупреждений, строка выглядит нормально. Однако firebug возвращает ошибку, потому что, очевидно, строка зашифрована после того, как я поместил ее на страницу, вызвав.html для. Я имею в виду, что вместо того, чтобы быть

<tr><td>somedata</td><td><input type=button onclick=fun('oldTrContent')/></td></tr>

его

<tr><td>somedata</td><td><input type=button oldTrContentNotInOrder') onclick=fun(/></td></tr>

который явно не может работать. Я попытался поместить несколько предупреждений в функцию, чтобы увидеть, не вызвано ли это поведение какой-то ошибкой форматирования, но все выглядит нормально до момента вызова.html(). Код, который я использовал, это:

function mostraModificaCompet(ids, nome){
var id='#'+nome;
var statoPrec=escape($(id).html());
alert(statoPrec);
var d=$(id+" .data").html();
var c=$(id+" .caus span").html();
var de=$(id+" .descr").html();
var pu=$(id+" .prezzou").html();
var q=$(id+" .qta").html();
var pt=$(id+" .prezzot").html();
var iu=$(id+" .ivau").html();
var it=$(id+" .ivat").html();
var t=$(id+" .tot").html();
var r=$(id+" .res").html();
var pr=$(id+" .progr").html();
var str="<td class=data ><input type=text value="+d+" /></td><td class=caus ><select class=selcaus ></select></td><td class=descr ><input type=text value="+de+" />\
</td><td class=prezzou ><input type=text value="+pu+" /></td><td class=qta ><input type=text value="+q+" /></td><td class=prezzot ><input type=text value="+pt+" disabled /></td>\
<td class=ivau ><input type=text value="+iu+" /></td><td class=ivat ><input type=text value="+it+" disabled /></td><td class=tot ><input type=text value="+t+" disabled /></td><td>\
<input type=button value='Conferma' onclick=modificaCompet("+ids+", '"+nome+"') /></td><td><input type=button value=Annulla onclick=ripristinaCompet('"+nome+"', '"+statoPrec+"') /></td>";
alert(str);
$(id).html(str);
}

переменная, в которой я сохраняю старое содержимое, - это statoPrec, который я затем использую при составлении str (он находится в конце строки). Заранее спасибо всем, кто ответит.

2 ответа

Решение

Вы пытаетесь установить значение недействительным HTML, onclick=modificaCompet("+ids+", '"+nome+"') нужны некоторые цитаты вокруг него, так что это onclick=\"onclick=modificaCompet("+ids+", '"+nome+"')\", И любые другие атрибуты, которые вы не смогли процитировать.

Проблема, похоже, заключается в том, что при первоначальном переходе от значений в ячейках td они доступны через innerHTML. Однако, как только они превращаются во входные данные, они являются значением ввода, а не innerHTML ввода. Возможно, вам придется создать две функции, где одна использует.html() элемента, а другая ищет.val() элемента.

Другие вопросы по тегам