亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Yii2 - ActiveForm 和 afterValidate 事件

Yii2 - ActiveForm 和 afterValidate 事件

PHP
MMMHUHU 2023-07-15 16:48:16
我正在將 ActiveForm 與該afterValidate()事件一起使用,但目前afterValidate()會在任何驗證事件上觸發。我如何區分事件validateOnSubmit和validateOnBlur?validateOnChange基本上,我只希望我的afterValidate()函數在提交時觸發。這是我的代碼:PHP:<?php $form = ActiveForm::begin([    'id' => 'register-form',    'options' => [        'class' => 'validate-form',    ],    'enableClientValidation' => true,    'enableAjaxValidation' => false,    'validateOnSubmit' => true,    'validateOnBlur' => true,    'validateOnChange' => true,]); ?>JS:// JS afterValidate function$('.validate-form').on('afterValidate', function (event, messages, errorAttributes) {    $('.error-popup').show();    return false;});HTML:<div class="error-popup">Please review the errors in the form below.</div>正如您在上面的函數中看到的afterValidate(),如果存在驗證錯誤,則會顯示錯誤彈出窗口。但是,我只希望在用戶提交表單時出現任何驗證錯誤時出現此錯誤彈出窗口。如果模糊/更改時出現驗證錯誤,則應進行正常的內聯驗證,而不會彈出任何錯誤。根據我的理解,beforeSubmit只有在驗證通過時才會觸發事件。
查看完整描述

3 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

Yii 的活動表單 JS 將一些信息保存到yiiActiveForm數據屬性中。您可以使用某些submitting屬性來確定表單在提交之前是否處于驗證狀態。


$('.validate-form').on('afterValidate', function (event, messages, errorAttributes) {

    let data = $('.validate-form').data('yiiActiveForm');

    //check if we are in submission process and if there are any errors

    if (data.submitting && errorAttributes.length > 0) {

        $('.error-popup').show();

    }

});


查看完整回答
反對 回復 2023-07-15
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

您應該在 afterValidate 之后找到 has-error 類并顯示彈出窗口嘗試以下代碼


$('.validate-form').on('afterValidate', function (event, messages, errorAttributes) {

        if ($('.validate-form').find('.has-error').length) {

            $('.error-popup').show();

        }

  });


查看完整回答
反對 回復 2023-07-15
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

您可以通過以下方式解決此問題:


$("#register-form").on("beforeSubmit", function(event){

    $(this).yiiActiveForm('validateAttribute', 'contactform-phone');

    $(this).yiiActiveForm('validateAttribute', 'contactform-email');

    if ($(this).find('.has-error').length) {

        ...

    }

    ...

    return false;

});

提交按鈕會觸發beforeSubmit事件,該事件又會觸發您需要的任何字段的驗證。如果驗證結果錯誤,您可以執行與顯示錯誤消息相關的 JS 邏輯。


查看完整回答
反對 回復 2023-07-15
  • 3 回答
  • 0 關注
  • 184 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號