当文本框名称包含方括号时,Javascript不起作用

Mic*_*ael 1 javascript php

我有这个用于计算方形区域的脚本,它完美无缺:

<script language="javascript" type="text/javascript">
function startCalc(){
  interval = setInterval("calc()",1);
}
function calc(){
  one = document.autoSumForm.firstBox.value;
  two = document.autoSumForm.secondBox.value; 
  document.autoSumForm.Area.value = (one * 1) * (two * 1);
}
function stopCalc(){
  clearInterval(interval);
}
</script>

<form name="autoSumForm">
<input  size="3"  type=text name="firstBox" value="" onFocus="startCalc();" onBlur="stopCalc();">
<input  size="3"  type=text name="secondBox" value="" onFocus="startCalc();" onBlur="stopCalc();">
<input  size="4"  type=text name="Area" readonly="true">
</form>
Run Code Online (Sandbox Code Playgroud)

但我的问题是我需要第三个盒子的名称 Area[<?php echo $area['area_id']; ?>]

但是,当我在名称中使用括号时,我无法使javascript工作.

Fel*_*ing 5

请注意,如果您不需要,则不应添加括号!它使它变得不必要复杂.

在您发布的代码中,没有迹象表明您需要这些括号.如果您有多个具有相同名称的输入字段并且希望PHP创建数组,则通常会添加它们.有关更多信息,请参阅外部源的变量.

如果您需要它们,您必须使用括号表示法来访问该字段:

document.autoSumForm['Area[<?php echo $area["area_id"]; ?>]'].value = (one * 1) * (two * 1);
Run Code Online (Sandbox Code Playgroud)

另外我建议不要在字段名称的括号内传递值.这会简化您的代码:

<input  size="4"  type=text name="Area[]" readonly="true">
Run Code Online (Sandbox Code Playgroud)

和:

document.autoSumForm['Area[]'].value = (one * 1) * (two * 1);
Run Code Online (Sandbox Code Playgroud)

然后,PHP将创建一个包含连续数字键的数组0.