首页 > 解决方案 > 在 yii2 中使用 j 查询选择 2 小部件验证?

问题描述

所以我为选择字段编写了一个代码,我正在使用 yii2 这是我的代码

 <?= $form->field($model, 'primaryfield')->widget(Select2::classname(), ['data' 
   => $listData, 
   'options' => ['placeholder'=>'Select', 'multiple' => 
   false,'required'=>true], 'pluginOptions' => ['tags' => false, 'tokenSeprators' 
  => [',', ' '], 'maximumInputLength' => 20], ],])->label(false); ?>

我想通过使用到目前为止我尝试过的验证规则的 jquery validate 插件来验证它

$('form').validate({


errorClass:'help-block help-block-error',

errorPlacement: function(error, element) {

if(element.attr("name") == "TestModel[primaryfield]" )
{
    error.insertAfter(".error_message2");
}
else
      error.insertAfter(element);
 },

       rules: {
    'TestModel[email]': {
    required:true,
   email: true 
  },

 'TestModel[name]':
 {
  required:true,
},

'TestModel[primaryfield]':
 {
   required:true
 }

 },

我的电子邮件和姓名得到验证,但 select2 字段(主字段未得到验证)我只想应用验证规则,前提是有人能给我解决方案

标签: javascriptphpjqueryyii2

解决方案


使用 Yii2,您只需在模型中声明规则。然后,

在您的模板中,启用 AcitveForm 的“enableClientValidation”选项,如下所示:

<?php $form = \kartik\form\ActiveForm::begin([
    'enableClientValidation' => true,
    'options' => [
        'id' => 'ajax-contact-form'
    ]
]); ?>

使用 Select2 Widget,这还不够。所以我必须使用 javascript 如下:

$(document).ready(function () {
    $("select").on("select2:close", function (e) {
        if (!$(this).val()) {
            var formGroup = $(this).parent().parent();
            formGroup.addClass('has-error');
            $('.help-block:first', formGroup).html('Please choose one partner!')
        }
    });
});

这是表单上的结果: 在此处输入图像描述 我的 select2 HTML 结构:

在此处输入图像描述


推荐阅读