这似乎是一个简单的问题,但到目前为止,我几乎每一次都受到挫败。
我正在使用 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
,我会得到输入到 textarea 中的文本。
在 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 应用程序????