0

我根本不懂 JavaScript。我使用 Jotform 创建了一个基于 Web 的表单,并附有一大堆条件,因为我不知道如何做到这一点。将其中的很多内容更改为 php,以便我可以访问我的数据库。反正。这是一张员工考勤卡表格。我们有一些需要总时间的字段。第一个字段是总工作时间。然后进入job1、job2、job3和job4。在 job1 中,它表示该工作的总小时数,job2 总小时数,job 3 等。我正在寻找一个脚本,如果 job1、2、3、4 和 5 不等于其原始输入的小时数,则显示错误。

Total Hours Worked = 8
Job1 Hours =3
Job2 Hours =5
JOb3 Hours =1
DISPLAY ERROR

Total Hours Worked = 8
Job1 Hours =1
Job2 Hours =4
Job3 Hours =2
Job4 Hours =1
ALLOW FORM TO SUBMIT

是不是很复杂。

4

2 回答 2

1

我懒洋洋地硬编码了工作的数量,但这就是你想要的。

<script type="text/javascript">
function checkHours() {
totalHours = Number(form.total.value);
realTotal = 0;
for (x = 1; x <= 4 /* hard-coded job count */; x++)
    realTotal += Number(eval("form.job" + x + ".value"));
if (totalHours != realTotal) {
        alert("Total hours does not match cumulative job hours");
        return false;    
}
}
</script>
<form name="form" method="post" onsubmit="return checkHours()">
<table>
<tr>
    <td>Total Hours</td><td><input type="text" name="total"/></td>
</tr>     
<tr>
    <td>Job 1</td><td><input type="text" name="job1"/></td>
</tr>   
<tr>
    <td>Job 2</td><td><input type="text" name="job2"/></td>
</tr> 
 <tr>
    <td>Job 3</td><td><input type="text" name="job3"/></td>
</tr> 
<tr>
    <td>Job 4</td><td><input type="text" name="job4"/></td>
</tr>     
</table>
<input type="submit" value="Submit">
</form>

If this is in case of mistakes: my solution will suffice. If it's because of highly untrustworthy employees that would intentionally attempt to fake hours: Bubbles is right and you should check it with php as well.

于 2012-08-31T02:45:31.480 回答
0

从理论上讲,这可以在 javascript 中完成,但会有点尴尬(而且可能更成问题,它会非常不安全 - 用户可以轻松克服您放置的任何 javascript 块,并且无效的表单可以进入数据库)。所以,如果我是你,我会考虑纯粹在 php 中实现要求;有一些方法可以返回带有提交值的表单,并在输入无效时显示错误消息。

但是,一旦您的服务器端验证工作正常,您仍然可能需要一些 javascript 来提醒用户,如果他们将要提交的表单将被发现无效。要做到这一点,它会变得有点复杂——它可能需要一些 jQuery。您要做的事情的要点是观察每个输入字段的更改(最有可能使用change),此时我将从每个输入中收集数据并查看它们是否都匹配。如果没有,您可以显示一条警告消息,表明该表单将无法工作。如果您是 jQuery 新手,这将需要一些工作,但肯定可以完成。

于 2012-08-31T02:28:37.063 回答