3 つの Web フォームを含む Web ページがあります。最初の 2 つはデジタル入力が必要で、最後の 1 つは空ではない可能性があります。
縮小され、すぐに実行できるテスト ケースを次に示します。
<html>
<head>
<style>
.invalid {
border: 2px solid #FF0000;
background-color: #FFCCCC;
}
</style>
<script type="text/javascript" src="jquery-1.4.4.min.js"></script>
<script type="text/javascript">
$(function() {
//$('body').click(....)
$('#cl_txt, #mks_txt, #comment_txt').blur(function() {
$('#cl_txt, #mks_txt, #comment_txt').removeClass('invalid');
});
$('#mks_btn').click(function(e) {
if (! $('#mks_txt').val().match(/^[0-9]{6,}$/i)) {
$('#mks_txt').addClass('invalid');
e.preventDefault();
}
});
$('#cl_btn').click(function(e) {
if (! $('#cl_txt').val().match(/^[0-9]{6,}$/i)) {
$('#cl_txt').addClass('invalid');
e.preventDefault();
}
});
$('#comment_btn').click(function(e) {
if ($('#comment_txt').val().length < 2) {
$('#comment_txt').addClass('invalid');
e.preventDefault();
}
});
});
</script>
</head>
<body>
<table border=1>
<form><tr><th>MKS</th><td>
<input name="toggle_mks" id="mks_txt" type="text" size="10">
<input type="submit" id="mks_btn" value="Add MKS" class="toggle">
</td></tr>
<form><tr><th>CL</th><td>
<input name="toggle_cl" id="cl_txt" type="text" size="10">
<input type="submit" id="cl_btn" value="Add CL" class="toggle">
</td></tr></form>
<form><tr><th>Comments</th><td>
<textarea name="comment" id="comment_txt" rows="4" cols="40">
</textarea>
<input type="submit" id="comment_btn" value="Add comment" class="toggle">
</td></tr></form>
</table>
</body>
</html>
無効なテキストが入力され、対応する送信ボタンがクリックされた場合、.invalidクラスをそのテキスト フィールドまたはテキスト領域に追加して、赤く表示します。
私の問題は、ユーザーが考えを変えて、その Web フォームを再度送信しないことにした状況を処理することです。代わりに、別の Web フォームをクリックするか、Web ページのどこかをクリックするだけです。
その場合、赤い.invalidクラスをテキスト要素#cl_txt、#mks_txt、および#comment_txt から再度削除したいと思います。でもアレンジの仕方がわからない。$('#cl_txt, #mks_txt, #comment_txt').blur(....)を設定しようとしましたが、一貫して機能しません。代わりに$('body').click(....)を試しましたが、フォームの検証が壊れているようで、テキスト フィールドが赤く塗られることはありません。
何か助けてください。