我有这个用于计算方形区域的脚本,它完美无缺:
<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>
但我的问题是我需要第三个方框的名称为 Area[<?php echo $area['area_id']; ?>]
但是当我在名字中使用括号时,我无法使javascript工作。
答案 0 :(得分:5)
请注意,如果您不需要括号,则不应添加括号!这使得它不必复杂。
在您发布的代码中,没有迹象表明您需要这些括号。如果您有多个具有相同名称的输入字段并且希望PHP创建数组,则通常会添加它们。有关详细信息,请参阅Variables From External Sources。
如果您需要它们,您必须使用括号表示法访问该字段:
document.autoSumForm['Area[<?php echo $area["area_id"]; ?>]'].value = (one * 1) * (two * 1);
另外我建议不要在字段名称的括号内传递值。这会将您的代码简化为:
<input size="4" type=text name="Area[]" readonly="true">
和
document.autoSumForm['Area[]'].value = (one * 1) * (two * 1);
然后,PHP将创建一个包含从0
开始的连续数字键的数组。
答案 1 :(得分:2)
虽然Felix的答案适用于大多数(所有?)浏览器,但应注意HTML名称和ID应该是有效的标识符,不能包含方括号。正确的解决方案是不要在名称和ID中使用方括号。
编辑:我的立场得到了纠正。在HTML 4中,'id'属性是类型ID,但表单元素的'name'属性是CDATA类型,因此几乎可以包含任何内容。见http://www.w3.org/TR/html4/index/attributes.html
我可能正在考虑meta'name',它是NAME类型。
答案 2 :(得分:2)
将id添加到textarea
<input size="4" type=text name="Area" id="someid" readonly="true">
按ID列出值
document.getElementById('someid').value = (one * 1) * (two * 1);
答案 3 :(得分:0)
我会在第三个框(第三个输入)中添加一个'id'属性,并为id赋予一个没有方括号的值。
使用'id'属性在javascript代码中选择DOM元素。让'name'属性保持方括号。