faryshta / yii2-disable-submit-buttons

Yii2 资产,用于自动禁用 Yii2 ActiveForm 中的提交按钮。

2.0.0 2018-08-25 13:27 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:20:45 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

Yii2 资产,用于自动禁用 Yii2 ActiveForm 中的提交按钮。

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一:

composer require "faryshta/yii2-disable-submit-buttons:~2.0.0"

或者

"faryshta/yii2-disable-submit-buttons": "~2.0.0"

将以下内容添加到您的 composer.json 文件的 require 部分:

注册资产

注册 faryshta\disableSubmitButtons\Asset,最好在您的 AppAsset 依赖项中注册。

use faryshta\disableSubmitButtons\Asset as DisableSubmitButtonAsset;

class AppAsset extends yii\web\AssetBundle
{
    public $depends = [
        DisableSubmitButtonsAsset::class,
        // other dependencies
    ];
}

使用方法

将 css 类 disable-submit-buttons 添加到您的 [ActiveForm] (https://yiiframework.cn/doc-2.0/yii-widgets-activeform.html) 小部件。

如果需要更改按钮上的文本,可以添加属性 data-disabled-text 并指定要更改的文本。

$form = ActiveForm::begin([
    'options' => ['class' => 'disable-submit-buttons'],
    // other configurations
]);

    // inputs

    Html::submitButton('Submit', [
        // optional, will show the value of `data-disabled-text` attribute
        // while handling the validation and submit
        'data' => ['disabled-text' => 'Please Wait']
    ])

$form->end();

这样,:input[type="submit"] 按钮将被禁用,如果验证失败,按钮将被再次启用。

JavaScript

此资产为 jQuery 添加了 2 个方法 disableSubmitButtons()enableSubmitButtons(),这些方法可以从 ActiveForm 小部件生成的 <form> 标签中调用。

Ajax 示例

以下示例使用 Ajax 提交表单,并在完成 Ajax 请求后启用提交按钮,以便用户可以发送另一个表单。

$form = ActiveForm::begin([
    'id' => 'ajax-form',
    'options' => ['class' => 'disable-submit-buttons'],
]);
    echo $form->field($model, 'name');

    echo Html::submitButton('Submit', [
        'data' => ['disabled-text' => 'Validating'],
    ]);

$form->end();

$this->registerJsFile('ajax-form.js');

然后在 ajax-form.js

$('#ajax-form').on('beforeSubmit', function () {
  var $yiiform = $(this);
  $.ajax(
    {
      type: $yiiform.attr('method'),
      url: $yiiform.attr('action'),
      data: $yiiform.serializeArray(),
    }
  ).done(function(data) {
    // success actions
    $yiiform.enableSubmitButtons(); // enable the submit buttons
  });

  return false; // prevent default form submission
});

实时演示

您可以使用以下 composer 命令运行此库的实时演示:

composer deploy-tests
composer yii serve

许可证

BSD 许可证(BSD)。有关更多信息,请参阅 许可证文件