【问题标题】:select 2 widget validation with j query in yii2?在 yii2 中使用 j 查询选择 2 小部件验证?
【发布时间】:2018-07-13 08:18:26
【问题描述】:

所以我已经为选择字段编写了代码,我正在使用 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 字段(主字段未得到验证)我只想应用验证规则,前提是有人可以给我解决方案

【问题讨论】:

    标签: javascript php jquery yii2


    【解决方案1】:

    使用 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 结构:

    【讨论】:

    • 感谢您的帮助,但它不适用于 select2 小部件
    • @Sneh:我刚刚编辑了我的答案。它在我的项目上运行良好。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2018-06-18
    • 2017-01-21
    • 2017-11-07
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多