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

3
这似乎是一个简单的问题,但到目前为止,我几乎在每个转折点都受挫了。
我正在使用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() ;

to:

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

它起作用了...

我的问题是:

为什么名称方法在FF中有效而在IE中无效?

编辑

使用Scott发布的信息,我很感兴趣并且稍微调整了一下代码。

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

但是在我的环境(IE7)中仍然无法工作……我不确定为什么或者如何解决,因为根据所有的意图和目的来看,它应该能够正常工作。Scott的fiddle证明了这一点。
所以出于没有充分理由(实际上是意外),对代码进行了微小的修改:
var userJustification = $('textarea[name = ' + appId + ']').val() ; 

(请注意选择器中“=”前后的空格)

它有效...起初我以为这与appId是整数有关...但即使在fiddle中,如果我将“One”更改为25...它仍然可以正常工作。

我在FF中验证了一下它的呈现方式...这是一个创建文本区域时看起来很正常的示例:

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

这可能与页面的渲染方式有关。它是在Apache服务器上运行的Apex应用程序吗?


1
在IE7和IE8中对我有效,jsFiddle - Code Maverick
我不知道...它让我举起双手。 - Patrick
是的,Patrick,那非常奇怪。如果你这样做$('textarea [name ="'+ appId +'"]').val(); ?在 IE7 上能行吗? - Code Maverick
好的建议...如果我使用 $('textarea[name="' + appId + '"]').val(); 那么它确实可以以那种格式工作...我几乎认为当oracle apex服务器通过apache呈现页面时,它会对IE(通常)不理解的名称进行一些奇怪的处理,因此它无法工作,而FF则更加灵活,可以理解你的意图。 - Patrick
我需要做的是使用IE开发者工具并查看它正在做什么...不幸的是,我没有在这台机器上访问工具的权限...只能等到以后再处理。 - Patrick
就好像IE认为>数字+字符串=无法计算...而FF则认为>数字+字符串...嗯,他们一定意味着数字应该是一个字符串,所以我会连接它...这是我能想到的唯一可能导致问题的事情。 - Patrick
2个回答

0
根据您在评论中的对话,将属性值加上引号可以解决IE7中的问题:
$('textarea[name="' + appId + '"]').val();

尽管我在您的评论中放置的working jsFiddle demo可以在IE7和IE8中正常工作,但是请注意不要加引号。


0

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

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


应用程序中还有其他区域我正在使用名称属性选择器,它运行良好...我通过名称在完全相同的页面上获取一组单选按钮的值,这还没有给我带来任何麻烦。 - Patrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接