空でない入力フィールドを検証するためのこの簡単なスクリプトを作成しました。
たとえば、フォームが送信され、IDが「name」の入力が空の場合、その要素の横に短いメッセージが表示されます。問題は、フォームがもう一度送信され、その入力が空でなくなった場合、これを行う
$(element).nextAll().remove()
と、IDが「phone」の要素が消えてしまうことです。
メッセージエラーを削除するだけで、他のすべての要素を削除する必要はありません。
その問題を解決するための短くて簡単な方法を提案してください。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
$("#formu").submit(function(){
validateInputText($("#name"),"Enter you name");
validateInputText($("#phone"),"Enter your phone number");
return false;
});
function validateInputText(inputText, errorMessage){
if($(inputText).val()==''){
setFieldAsNotValid(inputText, errorMessage)
}else{
removeErrorMessage(inputText)
}
}
function setFieldAsNotValid(element, errorMessage){
$(element).nextAll().remove();
$(element).after('<b>'+errorMessage+'</b>')
$(element).addClass('selected');
}
function removeErrorMessage(element){
$(element).nextAll().remove();
$(element).removeClass('selected');
}
});
</script>
</head>
<body>
<form id="formu">
name: <input type="text" id="name" />
phone: <input type="text" id="phone" />
<input type="hidden">
<input type="submit">
</form>
</body>
</html>