我正在使用jQuery显示模式对话框。该对话框具有textarea
控件。但是在提交此对话框时,由于某种原因,jQuery无法识别此textarea
的值:它始终为空白。
这在其他浏览器中完美运行。我发出警告来显示值,但它看起来是空白的。在这方面有人可以帮助我吗?
控制:
<input type="text" id="txtGroupName"/>
<textarea rows="3" cols="30" id="txtDescription"></textarea>
使用此值的jQuery代码:
var postData = new Object();
postData.GroupName = $('#txtGroupName').val();
postData.Description = $('#txtDescription').val();
$('#txtDescription').val()
空白但$('#txtGroupName').val()
被正确读取,因为它是输入字段。
关于这个问题的另一个发现:
当我在页面加载时填充控件值后在我的更新功能中设置警报时,此警报会正确显示现有值。但它只显示现有价值。提交模式框后,它不会显示已编辑的值。
答案 0 :(得分:3)
val()和text()工作正常,但是在设置textarea的值之后你需要 重新渲染textarea,你可以这样设置css属性
if ($.browser.opera)
$('textarea').val(someText).css({display:block});
else
$('textarea').val(someText);
来自俄罗斯的你好。抱歉我的英文=)
答案 1 :(得分:3)
我在textarea
中解决这个问题$("#descripcion").keydown(function(){
$("#descripcion").css("display","block");
});
放在脚本末尾。 我很抱歉我的英文
答案 2 :(得分:1)
您是否尝试过.attr("text")
或.attr("value")
?我无法测试这个,但这对我来说似乎是合乎逻辑的。
如果没有,请告诉我,我将删除此答案。
答案 3 :(得分:1)
你可能遇到一个非常模糊的错误,在Opera网站上发布的博客帖子1中提到“PATCH-287,Hack使脚本看到TEXTAREA中的类型值在blog.ebuddy.com上.Opera无法从以前隐藏的textarea中读取正确的值“。
我有点不愿意在没有看到完整代码的情况下推荐变通方法。
答案 4 :(得分:1)
美好的一天,
我对Opera 10.63和Windows也有同样的问题。
Javier Canizalez建议的黑客工作,但只要我不重用对话框(和textarea)。然而,这种情况并非如此。通过他的黑客,在页面加载后我点击一个项目,我显示一个之前隐藏的对话框(显示:无),里面有textarea。一切都很好(第一次)(黑客)。关闭对话框/ * $(对话框).hide()); * /并通过点击另一个项目再次重复使用,黑客不再工作,javascript / jQuery不再获取新的类型值,直到整页重新加载。
我在上面给出的一个链接中发现歌剧中的人已经解决了这个问题:PATCH-287 但它似乎并不适合我:)我在那里写了一个问题,看看他们是否会回复: opera patch-287
有人设法找到解决方法吗?
谢谢你,并致以最诚挚的问候。
答案 5 :(得分:0)
Textarea没有值属性。尝试使用
$('#txtDescription').text();
答案 6 :(得分:0)
我发现,在Chrome 6.0.472.59,Firefox 3.6.9和Opera 10.62中,所有这些都在Ubuntu 10.04上,textarea
确实拥有/使用.val()
属性。如果其他浏览器没有或可能没有,我将这个jsbin demo放在一起。不过,我使用if/else
块来涵盖这两种方法。以防万一...
$(document).ready(
function() {
$('form').submit(
function() {
if ($('textarea').val()) {
var means = 'val()',
textValue = $('textarea').val();
}
else {
var means = 'text()',
textValue = $('textarea').text();
}
alert('(' + means + ') ' + textValue);
return false;
}
);
}
);
此Stackoverflow问题(jQuery get textarea text)也表明它应该是可行且可靠的,Val()的jQuery.com的API页面上的第一个评论者也是{{3}}。
注意,就Opera而言:只有在我停用开发人员工具(无论出于何种原因)后,jsBin演示才有效。可能值得关闭Dragonfly(如果它正在运行),然后刷新演示页面(或者,显然,你自己的测试页面),看看它是否有所作为。无论哪种方式,总是值得清除缓存,以确保使用最新版本的文件。
答案 7 :(得分:0)
在Opera中获取值或textarea仅适用:
的document.getElementById( “描述”)值;
奇怪的是$(“textara#description”)。val(“”)有效(设定方法)
答案 8 :(得分:0)
我使用此解决方法:
if (window.opera)
{
document.addEventListener('focus', function(event){
if (event.target instanceof HTMLTextAreaElement)
{
event.target.contentEditable = true;
event.target.contentEditable = false;
}
}, true);
}
答案 9 :(得分:0)
按属性名称选择<textarea>
而不是ID。
<textarea id="txtDescription" name="txtDescription"></textarea>
<script>
jQuery("textarea[name='txtDescription']").val();
</script>