1 に答える
1
まず、ブラウザで計算されたすべての値をサーバーで検証する必要があることを明確にしたいと思います。サーバー側の検証に代わるものは実際にはありません。クライアント側のスクリプトは、ユーザー エクスペリエンスを向上させるためにのみ使用する必要があります。そうしないと、悪用されるのを待っているセキュリティ ホールになります。
- 当面の問題を解決するには、フォームが投稿されたときに無効な入力が送信されないという事実を利用できます。したがって、ユーザーが定期的な支払い
srt
を選択しない場合、投稿されることはありません。 srt
無効と非表示の両方から始めます。- 非表示の入力には、最初から
src
の値が必要0
です。 - 「定期支払い?」を追加しますか?フォームにチェックボックスを追加します。
- ユーザーがチェックボックスを選択した場合、有効にし
srt
て Javascript 経由で表示します。 src
の値を、ユーザーが で選択したものと同じに設定しますsrt
。- 無効にして空白にし
srt
、src
ユーザーがチェックボックスをオフにした場合。
マークアップ:
<p><input type="checkbox" value="recurring" id="recurring"/>Recurring Payment?</p>
<select disabled id="srt" name="srt">
<option selected value="2">2</option>
<option value="3">3</option>
</select>
<input type="hidden" id="src" name="src" value="0">
jQuery:
$('#recurring').click(function() {
var $srt = $('#srt'),
$src = $('#src');
if (this.checked) {
$srt.prop('disabled', false).toggle();
$src.val($srt.val());
} else {
$srt.prop('disabled', true).toggle();
$src.val(0);
}
});
$('#srt').change(function() {
$('#src').val($(this).val());
});
于 2011-09-12T18:26:14.700 に答える