使用jquery和textarea时IE和FF之间的差异

时间:2011-04-25 14:39:05

标签: jquery apache textarea oracle-apex

这似乎是一个简单的问题,但到目前为止,我几乎每次都被挫败了。

我使用jquery和json动态构建用户界面,使用从多个选择返回的id列表。该接口的一部分包括一个用户理由,它是动态创建的:

$('<textarea>').attr({
'rows': '5', 
'cols': '50', 
'name': appId,  
'id': 'AppJust' + appId}).appendTo('#contentColumn>#AppPanel' + appId);

在此过程中我还有以下代码:

var userJustification = $('textarea[name=' + appId + ']').val() ;

在FF中如果我发出警告userJustification,我会收到输入文本区域的文字。

在IE浏览器中,如果我提醒userJustification,我会收到undefined

我也试过var userJustification = $('textarea[name=' + appId + ']').attr('value') ; 结果完全相同。

如果我彻底改变:

var userJustification = $('textarea[name=' + appId + ']').val() ;

为:

var userJustification = $('textarea#AppJust' + appId).val() ;

它有效......

我的问题是:

为什么名称方法适用于FF而不是IE?

修改

使用Scott发布的信息,我很感兴趣,并且我对代码进行了一些修改。

var userJustification = $('textarea[name=' + appId + ']').val() ; 

但它仍然无法在我的环境中运行(IE7)...我不确定为什么或如何,因为所有意图和目的应该正常工作。斯科特的小提琴证明了这一点。

因此,没有充分的理由(实际上是偶然的)对代码进行了微小的改动:

var userJustification = $('textarea[name = ' + appId + ']').val() ; 

(注意选择器内'='前后的空格)

它有效...起初我认为它与appId是一个整数有关...但即使在小提琴中如果我将“One”改为25 ......它仍能正常工作。

我在FF中验证了它是如何渲染的......以下是文本区域在创建时的外观示例...没有任何异常:

<textarea id="AppJust40" rows="5" cols="50" name="40"></textarea>

它是否与页面本身的呈现方式有关?它是Apache服务器上的Apex应用程序????

2 个答案:

答案 0 :(得分:0)

这很奇怪,我唯一能想到的是IE不支持属性选择器(CSS,[name =])。然而,这应该不重要,因为JQuery使用它自己的引擎来“找到”DOM中的元素。

我建议将此记录为JQuery上的错误。

答案 1 :(得分:0)

根据您的评论中的对话,在属性值周围添加引号可以解决IE7中的问题:

$('textarea[name="' + appId + '"]').val();

即使 working jsFiddle demo 我首先在您的评论中添加了IE7和IE8,但没有引号。