【发布时间】:2012-09-11 22:01:58
【问题描述】:
我有一个脚本可以计算每个值并显示计算值。最后它还会从所有 div 中计算出已经计算的值
这里是html代码:
<td>
<div>
<input name="r" class="rate" type="text" maxlength="255" size="5" value />
<input name="p" class="pack" type="text" maxlength="255" size="5" value />
<span class="amount"></span>
</div>
</td>
<td>
<div>
<input name="r" class="rate" type="text" maxlength="255" size="5" value />
<input name="p" class="pack" type="text" maxlength="255" size="5" value />
<span class="amount"></span>
</div>
</td>
问题是我想将所有字段放在一个表单中,然后将它们提交到数据库。 但是,所有 div 都包含两个输入字段,名称分别为“r”和“p”。
所以,我有点卡在这里,因为我不知道如何使名称唯一或如何使用 POST 将它们传递到数据库。
这是计算脚本的样子:
<script type="text/javascript">//<![CDATA[
//any time the amount changes
$(document).ready(function() {
$('input[name=r],input[name=p]').change(function(e) {
var total = 0;
var $row = $(this).parent();
var rate = $row.find('input[name=r]').val();
var pack = $row.find('input[name=p]').val();
total = parseFloat(rate * pack);
//update the row total
$row.find('.amount').text(total);
var total_amount = 0;
$('.amount').each(function() {
//Get the value
var am= $(this).text();
console.log(am);
//if it's a number add it to the total
if (IsNumeric(am)) {
total_amount += parseFloat(am, 10);
}
});
$('.total_amount').text(total_amount);
});
});
//isNumeric function Stolen from:
//http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric
function IsNumeric(input) {
return (input - 0) == input && input.length > 0;
}
//]]>
</script>
【问题讨论】:
-
这在很大程度上取决于接收此表单的服务器端脚本。浏览器可以毫无问题地提交多个输入共享相同名称的表单;然而,接收脚本可能有。例如,PHP 不支持共享相同名称的输入,并且只会保留最新出现的输入,除非您将输入命名为
r[]和p[],在这种情况下 PHP 会将它们视为数组值,您可以处理所有输入的值。 -
所以,例如,如果我使用 name="p[]" 并通过使用 $p=$_POST['p[]'];它应该工作吗?
-
不,如果你使用
name="p[]",在PHP端你会收到$_POST['p'],这将是一个数组。 some documentation 怎么样? -
感谢 lanzz,我阅读了链接上的信息,如果您有
标签: javascript forms post field