【问题标题】:how to use brackets in javascript variable? [duplicate]如何在javascript变量中使用括号? [复制]
【发布时间】:2023-04-01 00:40:01
【问题描述】:

可能重复:
use brackets in checkbox name when using php and 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 一切正常。

感谢您的帮助。

马洛斯

【问题讨论】:

  • @PranavKapoor웃 — name 属性的值是 CDATA 令牌而不是 NAME 令牌。见here
  • 我研究了 Quentins 可能的重复线程,但据我所知(我不是 javascript 大师,我专攻 PHP)它有点不同,因此对我。还是你看到了一些我没有看到的东西?
  • @MarošMarkovič — 这个问题是关于使用 JS 访问名称中包含 [] 字符的输入元素。这和你的问题一样。
  • 是的,但是他只使用了一个变量type[],那么他可以使用f['type[]'][i]。当我使用其他括号 user[135][name] 时如何使用它?也许你看到了解决方案,但我不知道如何组合它:(
  • 你把名字(全名,没有名字)放在引号里。里面有多少[]并不重要。

标签: javascript html forms variables input


【解决方案1】:

我建议将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>

【讨论】:

  • 由于复杂的原因我不能使用jquery,只是一些简单的javascript。你的想法行不通:(但谢谢你的尝试。
  • 在这种情况下,只需将id="user_name_135" 添加到您的输入中,然后添加if(some_condition) { document.getElementById("user_name_135").disabled=false; }
  • Salil,我试过了,但它不起作用:(
  • @Maroš Markovič :- 查看我编辑的答案,它对我有用,也应该对你有用,可能是你的 condition 不满意,因此输入标签仍然是 disabled
  • 听起来很有希望。你的例子工作正常,我在我的表单中实现了更大的规模并且仍然可以。完全实施的最后一步需要一些时间,所以我会回来更新。谢谢。
【解决方案2】:

我唯一的建议是不要尝试。不要在标识符中使用“特殊”字符。如果出于其他原因需要标识符采用严格的数据格式,则将其应用于专用属性(例如data-xxx,或类似的东西)。

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 当 PHP 的默认表单处理程序库解析它们时,PHP 会将它们膨胀成嵌套数组的数据结构。
    • 所以我的回答和你的链接问题一样=)不知道php能够做到这一点。谢谢!
    • 没错,我使用它是因为当我将表单发送到 PHP 时,它会自动生成正确的数组,而无需额外的工作:)
    • document.myform['user[135][name]'] 不起作用:(
    【解决方案4】:

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

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

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

    【讨论】:

    • 为什么这不起作用?这对我有用。
    • 请参阅 jsFiddle 以获得证明。
    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多