2013-01-09 48 views
0

可能重复:
use brackets in checkbox name when using php and javascript?如何在javascript变量中使用括号?

我为输入域的名称在HTML代码中使用:

<input size="15" name="user[135][name]" value="" disabled=disabled> 

然后我想在这样的JavaScript和它的工作:

if(some_condition) { document.myform.user[135][name].disabled=false; } 

但这不起作用,因为字段名称中有括号。有没有办法如何解决它,而无需更改HTML代码?

经验:如果我使用name作为user_135_name,所有作品都完美无缺。

谢谢你的帮助。

Maros软件

+0

@PranavKapoor웃 - 的'name'属性的值是一个CDATA令牌不是NAME令牌。见[这里](http://www.w3.org/TR/html4/interact/forms。html#adef-name-INPUT) – Quentin

+0

我研究了Quentins可能的重复线程,但据我了解(我不是JavaScript的高手,我专门从事PHP),它有点不同,因此没用为了我。或者你看到什么,我不知道? –

+0

@MarošMarkovič - 这个问题是关于使用JS来访问名称中包含'['和']'字符的输入元素。这与你的问题一样。 – Quentin

回答

0

我会建议添加id您输入的标签如下

<input size="15" id="user_name_135" name="user[135][name]" value="" disabled=disabled> 

使用简单的Javascript

if(some_condition) { document.getElementById("user_name_135").disabled=false; } 

使用jQuery

if(some_condition){ $("#user_name_135").prop('disabled', false);} 

此外,如果只有一个语句,后跟if可以省略{}

if(some_condition) 
    document.getElementById("user_name_135").disabled=false; 

编辑 请下面的代码保存为HTML文件,看看它应该为你

<!doctype html> 
<html> 
<head> 
<script> 
function some(){ 
    document.getElementById("user_name_135").disabled=false; 
} 
</script> 
</head> 
<body> 
<input size="15" id="user_name_135" name="user[135][name]" value="" disabled=disabled> 
<a href ="javascript:void(0)" onclick="some()">disbale input</a> 
</body> 
</html> 
+0

由于复杂的原因我不能使用jquery,只是一些简单的javascript。你的想法不起作用:(但是,thanx for try。 –

+0

在这种情况下,只需将'id =“user_name_135”'添加到您的输入,然后'if(some_condition){document.getElementById(“user_name_135”)。disabled = false;}' – Salil

+0

Salil,我试过了,但它不工作:( –

0

我唯一的建议工作将甚至不尝试。不要在标识符中使用“特殊”字符。如果您需要标识符为了某些其他目的而采用严格的数据格式,那么将其应用于专用属性(如data-xxx或类似内容)。

解决方案是使用不同的格式,只包括字母数字和'基本'字符(如下划线而不是空格等)。

0

document.myform['user[135][name]']应该工作,但为什么你有这样奇怪的名字?

您在代码中所涉及的是访问名称属性(如果您有['name'])数组“user”中的第135个字段。

+0

当PHP默认的表单处理程序库解析它们时,PHP会将它们膨胀为嵌套数组的数据结构。 – Quentin

+0

所以我的回答和你链接的问题一样=)不知道PHP能做到这一点。谢谢! –

+0

确切地说,我使用它,因为当我将表单发送到PHP时,它会自动生成正确的数组,无需额外的工作:) –

0

不要在名称中使用特殊字符,你可以做你需要的是这样的:

if(some_condition) { 
    document.getElementsByName('user[135][name]')[0].disabled=false; 
} 

见现场演示:http://jsfiddle.net/Lw9ns/9/

+0

this doesn 't work :( –

+0

为什么不能工作?这对我有效。 – ATOzTOA

+0

查看jsFiddle的证据。 – ATOzTOA