这似乎是一个简单的问题,但到目前为止,我几乎在每个转折点都受挫了。
我正在使用jquery和json动态构建用户界面,使用从多个选择返回的id列表。该界面的一部分包括用户的理由,其动态创建如下:
在此过程中,我有以下代码:
但是在我的环境(IE7)中仍然无法工作……我不确定为什么或者如何解决,因为根据所有的意图和目的来看,它应该能够正常工作。Scott的fiddle证明了这一点。
所以出于没有充分理由(实际上是意外),对代码进行了微小的修改:
我正在使用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应用程序吗?
$('textarea [name ="'+ appId +'"]').val();
?在 IE7 上能行吗? - Code Maverick