2017-10-20 10 views
1

以下は私のコードです。私がしたいのは、ユーザーが入力フィールドをクリックしたときに検証メッセージ "名前が必要です"が表示されるように検証を追加することです。しかし、それは入力フィールドのすぐ下にあり、常時存在しています。submit()ボタンなしでjQueryの検証を追加しようとしています

$(document).ready(function() { 
 
    $('#firstname').on('blur', function() { 
 
     if ($('#firstname').val() == '') { 
 
      $('.errorMsg').show(); 
 
     } else { 
 
      $('.errorMsg').hide(); 
 
     } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label for="firstname">First Name</label> 
 
<input type="text" name="firstname" id="firstname" placeholder="First name" 
 
    maxlength="15"> <span class="errorMsg" style="display: none;">Name required </span> 
 
</input>

+0

これは、現実世界のアプリケーションであれば、私はまた、 'maxlength'属性に対して助言します。人々は、ほとんどのwebdevelopersが想像することができるよりも面白い名前を持つ傾向があります –

+0

@ OliverBaumannしかし、データベースが15を受け入れる場合、それはいくつかの問題を引き起こす可能性があります。しかし、私は15文字が最初の名前のために低いが、低いことに同意します。 – Ivar

+0

@Ivar、データベースが15のvarcharsしか受け付けていない場合は、データベース管理者に話してください;-)正直なところ、それは引数ではありません。犯罪は、明らかに意味しませんでした! –

答えて

0

ありがとうjQueryを使用して

$(document).ready(function(){ 

    $('.errorMsg').hide(); 

    $('#firstname').blur(function(){ 
    if($('#firstname').val() == ''){ 
     $('.errorMsg').show(); 
    } 
     else{ 
      $('.errorMsg').hide(); 
     } 

    }); 


}); 

ここで最初にエラー・メッセージを非表示にするJSFiddle

0

見つかった要素から直接呼び出すことができますblurイベントを、使用します。あなたはそのためblurイベントを使用することができます

$(document).ready(function(){ 
 
    if($('#firstname').val() == ''){ 
 
    $('.errorMsg').show(); 
 
    } else{ 
 
    $('.errorMsg').hide(); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label for="firstname">First Name</label> 
 
<input type="text" name="firstname" id="firstname" placeholder="First name"  maxlength="15" <span class="errorMsg">Name required </span> 
 
</input>

1

使用CSSです。無効なHTMLもあります。エラーメッセージspanを入力にネストすることはできません。

作業溶液:

$(document).ready(function(){ 
 
    $('#firstname').on('blur', function() { 
 
     if($(this).val() === '') { 
 
     $('.errorMsg').show(); 
 
     } else { 
 
     $('.errorMsg').hide(); 
 
     } 
 
    }); 
 
});
.errorMsg { 
 
    display: none; 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label for="firstname">First Name</label> 
 
<input type="text" name="firstname" id="firstname" placeholder="First name" 
 
maxlength="15"/> 
 
<span class="errorMsg">Name required </span>

0

jQuery Blur - "ぼかし"、JavaScriptのイベントにイベントハンドラをバインドし、または要素にそのイベントをトリガします。

てみてください(JSFiddle

var firstNameInput = $('input#firstname'), 
    errorMsgEl = $('.errorMsg'); 

// Bind blur on the input for 'first name' 
firstNameInput.bind('blur', function() { 
    // Check if input is blank 
    if(firstNameInput.val() == '') { 
     // Ensure error isn't already displayed 
     if (errorMsgEl.length == 0) $("<div class='errorMsg'>Name required</div>").insertAfter(this); 
    } else { 
     errorMsgEl.remove(); 
    } 
}); 
関連する問題