【发布时间】:2013-10-08 21:19:02
【问题描述】:
我是个 JavaScript 菜鸟,但我有一个很好的问题要解决。
我有一个从数据库接收数据的表单。
我编写了一个非常简单的 javascript,它自己执行我希望它执行的计算。 但是我怎样才能将计算出的值返回到表单中。我想使用 onkeyup 以便在发送表单之前更新数据。
此时我只有表单和单独的 javascript。但我不知道如何让它们一起工作。我知道 javascript 中的 document.write 语句在表单中不起作用。这个,我只是用来构建和检查我的计算器。
只要填入impru_rest 值,就必须开始计算。它必须将 impru_dobanda 和/或 impru_sold 的新值发送回表单。
有什么想法吗?
这是表单的一部分
<?php
// create form according to existing loan/interest
echo '<td><div align="center"><input type="text" size="11" name="impru_acc" value = '.$impru_acc.'></div></td>';
echo '<td><div align="center"><input type="text" size="11" name="impru_rest" onkeyup= value = ""></div></td>';
echo '<td><div align="center"><input type="text" size="11" name="impru_sold" value = '.$impru_sold.'></div></td>';
echo '<td><div align="center"><input type="text" size="11" name="impru_dobanda" value = '.$impru_dobanda.'></div></td>';
>?
这是计算
<script type=\"text/javascript\">
var impru_acc = ".$impru_acc.";
var impru_dobanda = ".$impru_dobanda.";
var impru_rest = ".$impru_rest.";
var impru_sold = ".$impru_sold.";
if (impru_dobanda>0) {
var difference = impru_dobanda-impru_rest;
} else {
var difference = 0;
}
if (difference > 0) {
impru_dobanda = impru_dobanda - impru_rest;
document.write(impru_sold);
document.write(impru_dobanda);
}
if (difference < 0) {
impru_sold = difference + impru_sold;
impru_dobanda = 0;
document.write(impru_sold);
document.write(impru_dobanda);
}
if (difference == 0) {
impru_dobanda = 0;
var impru_sold=impru_sold-impru_rest;
document.write(impru_sold);
document.write(impru_dobanda);
}
</script>
在 Allen123 和 tinyByte 的帮助下,我得到了这个,但它什么也没做:
我现在在标题中添加了 jquery 注释。
我可能在函数中犯了错误,但现在似乎什么都没有发生。我猜脚本不能影响表单中的值 这就是我所拥有的。我做错了什么?
<?php
// create form according to existing loan/interetest
echo '<td><div align="center"><input type="text" size="11" name="impru_acc" value = '.$impru_acc.'></div></td>';
echo '<td><div align="center"><input type="text" size="11" name="impru_rest" onkeyup=calculateAll(); value = ""></div></td>';
echo '<td><div align="center"><input type="text" size="11" name="impru_sold" value = '.$impru_sold.'></div></td>';
echo '<td><div align="center"><input type="text" size="11" name="impru_dobanda" value = '.$impru_dobanda.'></div></td>';
?>
<script>
function calculateAll(){
var impru_acc = $('input[name="impru_acc"]').val();
var impru_dobanda = $('input[name="impru_dobanda"]').val();
var impru_rest = $('input[name="impru_rest"]').val();
var impru_sold = $('input[name="impru_sold"]').val();
if (impru_dobanda>0) {
var difference = impru_dobanda-impru_rest;
} else {
var difference = 0;
}
if (difference > 0) {
impru_dobanda = impru_dobanda - impru_rest;
}
if (difference < 0) {
impru_sold = difference + impru_sold;
impru_dobanda = 0;
}
if (difference == 0) {
impru_dobanda = 0;
var impru_sold=impru_sold-impru_rest;
}
}
$(document).ready(function(){
$('input').change(function(){
calculateAll();
});
});
【问题讨论】:
-
你为什么不在php中进行计算?什么触发了计算? (PS 我怀疑你需要 jquery)
-
嗨艾伦。我还没有找到这样做的方法。你有什么建议吗?通过填写 impru_rest 字段触发计算。基本上这是关于贷款、利息和付款。我必须先通过付款使利率回到零。剩下的将被拿走萨尔多。从那时起,萨尔多将继续下降,直到所有付款完成。我还没有找到在 PHP 中主动更新表单字段的方法。
-
嗨,迈克,我不确定您要做什么,如果在用户更改某些内容后需要进行计算,那么您必须使用 Javascript。如果不是这种情况,那么 php 会更好。
-
迈克现在更容易理解了
-
你写的这个函数的输出是什么?你想从中获得什么? (因为你的新函数没有输出!)
标签: javascript php jquery mysql forms