单选按钮上的错误消息定位 JQuery 验证

Error message positioning on radio button JQuery Validation

我有一个单选按钮,只能选中一个。然而,错误消息显示在错误的地方,它显示在第一个单选按钮 "walk in" 上。我希望它显示在单选按钮的选择下,在单选按钮 "under" 下。

这是我的代码

<form class="form-horizontal" id="formApplication" role="form">
    <div class="form-group">
       <div class="col-sm-2">
          <input type="radio" name="rbtnFind" id="rbtnWalkIn" value="Walk-In"> Walk-In
       </div>
    </div>
    <div class="form-group">
       <div class="col-sm-2">
           <input type="radio" name="rbtnFind" id="rbtnJobFair" value="Job Fair"> Job Fair
       </div>
    </div>
    <div class="form-group">
       <div class="col-sm-2">
           <input type="radio" name="rbtnFind" id="rbtnSocialMedia" value="Social Media"> Social Media
       </div>
    </div>
    <div class="form-group">
        <div class="col-sm-2">
             <input type="radio" name="rbtnFind" id="rbtnReferred" value="Referred"> Referred
        </div>
    </div>
    <div class="form-group">
         <div class="col-sm-2">
              <input type="radio" name="rbtnFind" id="rbtnOther" value="Other"> Other
         </div>
     </div>
     <button type="submit" class="btn pull-right" id="btnContinue1">Continue</button>
  </form>

和 JQuery

$("#formApplication").submit(function(e){
     e.preventDefault();
 }).validate({
     rules:{
        rbtnFind: "required"
     },
     messages: {
        rbtnFind: "Please select an option"
     },
     highlight: function(element){
        if($(element).attr('type') == 'radio'){                       
             $(element.form).find("input[type=radio]").each(function(which){
                 $(element).closest('.form-group').addClass('has-error');
             });
                    } 
        else {
             $(element).closest('.form-group').addClass('has-error');
        }        
     },
     unhighlight: function(element){
         $(element).closest('.form-group').removeClass('has-error');
     },
     errorElement: 'span',
     errorClass: 'help-block',
     errorPlacement: function(error, element) {
         if(element.parent('.input-group').length) {
               error.insertAfter(element.parent());
         } else {
                error.insertAfter(element);
         }
      },
      submitHandler: function(form) { 
           //submit code         
      }
      });

Here是JSFiddle中的代码。

这里是我的 Fiddle - https://jsfiddle.net/skyr9999/8nm3tvph/ 希望对你有帮助,我在 js 中进行了更改并将占位符添加到 html:

$("#formApplication").submit(function(e){
     e.preventDefault();
 }).validate({
     rules:{
        rbtnFind: "required"
     },
     messages: {
        rbtnFind: "Please select an option"
     },
     highlight: function(element){
        if($(element).attr('type') == 'radio'){                       
             $(element.form).find("input[type=radio]").each(function(which){
                 $(element).closest('.form-group').addClass('has-error');
             });
                    } 
        else {
             $(element).closest('.form-group').addClass('has-error');
        }        
     },
     unhighlight: function(element){
         $(element).closest('.form-group').removeClass('has-error');
     },
     errorElement: 'span',
     errorClass: 'help-block',
     errorPlacement: function(error, element) {
        $(".error_placeholder").html(error.html());
      },
        submitHandler: function(form) { 
        $(".error_placeholder").html("");
           //submit code         
      }
      });

我已经对你的脚本做了一些修改,看看你是否想要这样

<form class="form-horizontal" id="formApplication" role="form">
  <div class="form-group">
    <div class="col-sm-2">
      <input type="radio" name="rbtnFind" id="rbtnWalkIn" value="Walk-In"> Walk-In
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-2">
      <input type="radio" name="rbtnFind" id="rbtnJobFair" value="Job Fair"> Job Fair
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-2">
      <input type="radio" name="rbtnFind" id="rbtnSocialMedia" value="Social Media"> Social Media
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-2">
      <input type="radio" name="rbtnFind" id="rbtnReferred" value="Referred"> Referred
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-2">
      <input type="radio" class="errorPlacement" name="rbtnFind" id="rbtnOther" value="Other"> Other
    </div>
  </div>

  <div id="divFindFollowUp" class="form-group">
    <!-- For the follow up for the question above -->
  </div>
  <button type="submit" class="btn pull-right" id="btnContinue1">Continue</button>
</form>
<script>
    $("#formApplication").submit(function(e) {
      e.preventDefault();
    }).validate({
      rules: {
        rbtnFind: "required"
      },
      messages: {
        rbtnFind: "Please select an option"
      },
      highlight: function(element) {
        if ($(element).attr('type') == 'radio') {
        $(element.form).find("input[type=radio]").last().closest('.form-group').addClass('has-error');
        } else {
          $(element).closest('.form-group').addClass('has-error');
        }

        //$(element).closest('.form-group').addClass('has-error');
      },
      unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error');
      },
      errorElement: 'span',
      errorClass: 'help-block',
      errorPlacement: function(error, element) {
      if ($(element).attr('type') == 'radio') {
        error.insertAfter($(".errorPlacement").parent());
      }
      else{
        if (element.parent('.input-group').length) {
          error.insertAfter(element.parent());
        } else {
          error.insertAfter(element);
        }
      }
      },
      submitHandler: function(form) {

      }
    });
</script>
$("#formApplication").submit(function(e) {
  e.preventDefault();
}).validate({
  rules: {
    rbtnFind: "required"
  },
  messages: {
    rbtnFind: "Please select an option"
  },
  highlight: function(element) {
    if ($(element).attr('type') == 'radio') {
      $(element.form).find("input[type=radio]").each(function(which) {
        $(element).closest('.form-group').addClass('has-error');
      });
    } else {
      $(element).closest('.form-group').addClass('has-error');
    }

    //$(element).closest('.form-group').addClass('has-error');
  },
  unhighlight: function(element) {
    $(element).closest('.form-group').removeClass('has-error');
  },
  errorElement: 'span',
  errorClass: 'help-block',
  errorPlacement: function(error, element) {
    if (element.parent('.input-group').length) {
     error.insertAfter(element.parent());
    } else {
    console.log(error);
      error.insertAfter('.has-error'); //Replace has-error with element
    }
  },
  submitHandler: function(form) {

  }
});