我正在编写一个在线应用程序,我将一些文本保存到数据库中。 有5个“textarea”-s和5个“输入类型=文本”-s。 我也在实现搜索,以便轻松查找和编辑数据库条目。将显示一个新的选择窗口(使用prototype和ajax),当单击其任何条目时,将填充以下表单(它与用于添加新结果的表单相同)。现在问题就出现了.... 如果我添加一个新表单或编辑任何已修改的现有的所有TEXTAREA字段,被锁定或类似的东西(只有textareas,输入仍然有效)......他们将不再服从Javascripts .update,所以他们不要当我选择下一个条目时改变....或者至少在FireFox中使用它们(3.5.something)。它在IE中工作正常,但由于我是一个FF用户,我不想在那里工作,我想知道是否有人遇到任何类似的问题并轻松解决它。 当我调用form.reset()时问题似乎消失了,但这会混淆一些代码生成的select / option字段,除此之外我不想保留数据。
对我来说,看起来FF决定我输入的文本比javascript尝试输入的文本更重要,所以它覆盖了它......我无法弄清楚为什么。在这一点上,我责备.update(),但我不知道如何做到这一点。 INPUT字段似乎与.update有问题(或者它对我来说不起作用),所以我不得不将它们重写为.value =(也尝试过.value和textareas,希望能解决任何问题,遗憾的是徒劳无功)。
那么,有没有任何线索为什么会发生这种情况以及如何解决它,而不必在每一步重置表单?
我有同样的问题。当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");
.value和.innerHTML似乎解决了这个问题
我有这个确切的问题。到目前为止我已经尝试过
$('#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);
});
问题似乎是如果用户键入textarea(#message)然后单击按钮添加商品链接,则不显示任何内容。查看源代码,使用Firebug,我可以看到textarea中包含的实际文本正在修改,但不会显示在屏幕上。
看来javascript正在改变标签的html内容,但是浏览器将当前输入的内容存储在内存中(我假设)或其他地方。
使用val(e + offer)更新textarea将删除输入的文本并将其替换为offerlink,并且使用innerHTML = e + offer根本不起作用,在textarea中没有显示任何变化。
我已经设法排序了!
我的想法围绕着这样一个事实:因为标签包含文本,并且有自己的结束标记,所以我必须使用.html()来获取它的内容。
通过使用.val()来获取字段的内容,您可以简单地提取和更新内容。我最终得到了以下内容,
$('#addofferlink').click(function(){
var e = $('#message').val();
var offer = "#OFFER_"+$('#offer_id').val()+"#";
$('#message').val(e+offer);
});
我只是简单地解决了这个奇怪的问题
document.forms[0].text_area_name.value = "STUFF";
即使修改了textarea,脚本也会覆盖。
修改textarea后,innerHTML
没有为我工作。
有时您可能希望在textarea中显示特定字符串并让用户看到它是什么,然后可能对其进行更改;但是,您希望让他们看到原始文本是什么。 Textareas非常笨拙,但即使手动更改已编辑的文本也可以使用此设置进行更改。
<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 = "";
}
}
以上结构为我解决了这个问题。