0

JavaScriptは全然知りません。Jotformを使用して、さまざまな条件が付加されたWebベースのフォームを作成しました。これを行う方法がわからないためです。dbにアクセスできるように、多くをphpに変更しました。ともかく。従業員のタイムカードフォームです。合計時間が必要なフィールドがいくつかあります。最初のフィールドは総労働時間です。次に、job1、job2、job3、およびjob4に進みます。job1には、そのジョブの合計時間、job2の合計時間、job3などが表示されます。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>

これが間違いの場合:私の解決策で十分です。非常に信頼できない従業員が故意に時間を偽造しようとしている場合: バブルは正しいので、php でも確認する必要があります。

于 2012-08-31T02:45:31.480 に答える
0

理論的には、これは JavaScript で行うことができますが、少し厄介です (そして、おそらくもっと問題があり、非常に安全ではありません。ユーザーは、あなたが設定した JavaScript ブロックを簡単に克服でき、無効なフォームがデータベースに到達する可能性があります)。 )。したがって、もし私があなたなら、要件を純粋に php で実装することを検討します。送信された値を含むフォームを返し、入力が無効である場合にエラー メッセージを表示する方法があります。

ただし、サーバー側の検証が機能している場合でも、送信しようとしているフォームが無効であることが判明した場合にユーザーに警告するために、JavaScript を少し使用する必要がある場合があります。これを行うには、少し複雑になります。jQuery が必要になる可能性があります。あなたがすることの要点は、各入力フィールドへの変更を監視することです (おそらくchangeを使用します)。その時点で、各入力からデータを収集し、すべてが一致するかどうかを確認します。そうでない場合は、フォームが機能しないという警告メッセージを表示できます。jQuery を初めて使用する場合、これには少し手間がかかりますが、確実に実行できます。

于 2012-08-31T02:28:37.063 に答える