select2 下拉列表的 jquery 验证弹出窗口位置问题

标签 jquery css validation jquery-select2

我在 popover 中显示表单验证错误消息。它适用于文本元素。但它的位置在 select2 元素中发生了变化。它在文本元素的字段中心显示 popover 错误消息,但在 select 2 元素中它显示错误左侧 Angular 的消息如何在 select2 错误消息的中心显示弹出消息

$(document).ready(function(){
		my_validate();
    $("#country_selF").select2();
})
var data_form = $( "#data_form" );
function my_validate(){
   data_form.validate( {
      rules: {
          country_name:{
                required:true
          },
          state_name :{
                required:true
               
          }
      },
      messages:{
          country_name:{
            required : "Select country name"
          },
          state_name:{
            required : 'Enter state name'
          }
      },
      errorClass: "my-error-class",
      showErrors: function(errorMap, errorList) {
          $.each( this.successList , function(index, value) {
              $(value).popover('hide');
          }); 
          $.each( errorList , function(index, value) {
           
            var popoverDta = $(value.element).popover({
                  trigger   : 'manual',
                  placement : 'top',
                  content   : value.message,
                  template  : '<div class="popover"><div class="arrow"></div><div class="popover-inner"><div class="popover-content text-danger"><p></p></div></div></div>'
            });                      
            $(value.element).data('bs.popover').options.content = value.message;
                $(value.element).popover('show');
            });
      }        
  }); 
 }
 $(document).on('click',".save_btn",function(){
  if(data_form.valid() == true){
  }
  });
form{
  margin:50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.0.12/dist/js/select2.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.0.12/dist/css/select2.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<!-- form start -->
            <form class="form-horizontal" method="post" name="data_form" id="data_form" action="http://172.16.20.9:1010/galaxy_vehicle_tracking/state_master.php" >
              <input type="hidden" name="fld_id" value="" id="fld_id">
              <div class="box-body">
                <div class="form-group">
                  <!-- Country name -->
                  <label for="country_selF" class="col-lg-2 col-md-2 col-sm-12 col-xs-12 control-label">Country Name</label>
                  <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
                    <select  class="form-control custom_frm enb_dsb_fld"  placeholder="" name="country_name" value="" id="country_selF" style="width:100%;" ></select>
                  </div>
                  <!-- end of the Country Name --> 
                  <!-- state name -->       
                   <label for="state_name" class="col-lg-2 col-md-2 col-sm-12 col-xs-12 control-label">State Name</label>
                  <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
                    <input type="text" class="form-control enb_dsb_fld mv_next" id="state_name"  name="state_name" required="required">
                  </div>         
                  <!-- end of the state name -->
                </div><!-- end of the form group -->               
              <!-- /.box-body -->
              <div class="box-footer" style="text-align: right;" id="btn_box">
                <div class="col-sm-12" style="text-align: right;" id="btn_box">             
                              <button type="button" class="btn btn-success save_btn btn-sm" id="save_btn">Save</button>
              </div>
              </div>
              </div>
              <!-- /.box-footer -->
            </form>

最佳答案

我正在用 CSS 来做这件事。请仔细检查我的CSS代码,

让我知道进一步的说明

希望对您有所帮助。 :)

$(document).ready(function(){
  my_validate();
  $("#country_selF").select2();
})
var data_form = $( "#data_form" );
function my_validate(){
 data_form.validate( {
    rules: {
        country_name:{
              required:true
        },
        state_name :{
              required:true
             
        }
    },
    messages:{
        country_name:{
          required : "Select country name"
        },
        state_name:{
          required : 'Enter state name'
        }
    },
    errorClass: "my-error-class",
    showErrors: function(errorMap, errorList) {
        $.each( this.successList , function(index, value) {
            $(value).popover('hide');
        }); 
        $.each( errorList , function(index, value) {
         
          var popoverDta = $(value.element).popover({
                trigger   : 'manual',
                placement : 'top',
                content   : value.message,
                template  : '<div class="popover"><div class="arrow"></div><div class="popover-inner"><div class="popover-content text-danger"><p></p></div></div></div>'
          });                      
          $(value.element).data('bs.popover').options.content = value.message;
              $(value.element).popover('show');
          });
    }        
}); 
}
$(document).on('click',".save_btn",function(){
if(data_form.valid() == true){
}
});
form{
  margin:50px;
}
.popover.top>.arrow{
  left: 0 !important;
    right: 0 !important;
    margin: 0 auto !important;
}
.popover.top{
  left: 0 !important;
    right: 0 !important;
    margin: 0 auto;
    max-width: 200px;
    text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.0.12/dist/js/select2.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.0.12/dist/css/select2.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<!-- form start -->
            <form class="form-horizontal" method="post" name="data_form" id="data_form" action="http://172.16.20.9:1010/galaxy_vehicle_tracking/state_master.php" >
              <input type="hidden" name="fld_id" value="" id="fld_id">
              <div class="box-body">
                <div class="form-group">
                  <!-- Country name -->
                  <label for="country_selF" class="col-lg-2 col-md-2 col-sm-12 col-xs-12 control-label">Country Name</label>
                  <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
                    <select  class="form-control custom_frm enb_dsb_fld"  placeholder="" name="country_name" value="" id="country_selF" style="width:100%;" ></select>
                  </div>
                  <!-- end of the Country Name --> 
                  <!-- state name -->       
                   <label for="state_name" class="col-lg-2 col-md-2 col-sm-12 col-xs-12 control-label">State Name</label>
                  <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
                    <input type="text" class="form-control enb_dsb_fld mv_next" id="state_name"  name="state_name" required="required">
                  </div>         
                  <!-- end of the state name -->
                </div><!-- end of the form group -->               
              <!-- /.box-body -->
              <div class="box-footer" style="text-align: right;" id="btn_box">
                <div class="col-sm-12" style="text-align: right;" id="btn_box">             
                              <button type="button" class="btn btn-success save_btn btn-sm" id="save_btn">Save</button>
              </div>
              </div>
              </div>
              <!-- /.box-footer -->
            </form>

关于select2 下拉列表的 jquery 验证弹出窗口位置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59065265/

相关文章:

html - 在 CSS 中创建一个无样式类

html - CSS hover div 更改另一个 div 样式(不在同一父项下)

forms - inputmode 属性是否有效(在 HTML5 表单中)?

ruby-on-rails - 跨表单对象和模型的重复验证

c# - 当文本框具有默认值时,MVC 3 不显眼的 javascript 验证

javascript - JQuery 拖放/模态用法

jquery - 将类添加到单击的 li 对象

javascript - 单击或悬停后可以更改状态吗?

jquery - Joomla Jquery 无法工作,这是为什么?

html - 变换比例上的不稳定文本