【问题标题】:Wanting Form requirement one cell to equal other cells prior to submit希望表格要求一个单元格在提交之前等于其他单元格
【发布时间】:2012-08-31 01:29:53
【问题描述】:

我根本不懂 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

这是不是很复杂。

【问题讨论】:

    标签: javascript html forms required-field


    【解决方案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>
    

    如果这是在错误的情况下:我的解决方案就足够了。如果是因为高度不信任的员工会故意尝试伪造时间:Bubbles 是正确的,您也应该使用 php 进行检查。

    【讨论】:

    • 这是为了防止出错。员工只是一般......好吧,他们犯了错误......
    • 我想了解您的代码,而不仅仅是复制和粘贴它(除了我的表单还有更多内容,而不是其中的工作时间。)脚本的哪一部分正在查看工作输入? “form.job”是否自动知道job1、job2等?如果我插入了 5 或 10 个工作,然后将它们称为 job5、job6 等。它还会自动计算吗?我会更改“(x =1 ; x
    • Nm 只是在玩弄它。奇迹般有效!!!太感谢了。如果我使用下拉列表,编码会有所不同吗?而不是文本输入?就像选项 1、2、3、4 一样?
    • 在 Bubbles 响应中,他使用更改,我如何将选项更改为每个文本字符串并将其包含在您的脚本中?
    • 关于使用下拉菜单:我不太了解您希望如何为需要指定小时数的内容使用下拉菜单...除非您计划有选项1:1 小时,以此类推。请详细说明,以便我给出答案。假设我没看错:Bubbles 指的是每次有人更改任何输入中的数字时都会进行错误检查。这将允许它在您尝试提交之前告诉您它是不正确的。由于我所做的事情阻止了您发送它,并且也没有清除它,所以我真的认为不需要它。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多