在经典的gii生成的PHP代码中:
$form=$this->beginWidget('CActiveForm', array(
'id'=>'stuff-form',
'enableAjaxValidation'=>true, ...
Run Code Online (Sandbox Code Playgroud)
如果我设置'enableAjaxValidation'=> true,则会显示此javascript错误(并且验证不起作用):
Uncaught TypeError: Object [object Object] has no method 'yiiactiveform'
Run Code Online (Sandbox Code Playgroud) yii.activeForm.js帮助客户端验证并允许或拒绝表单提交.Onclick,活动表单自动调用submitForm:function().
现在,我想在验证期间将活动表单按钮文本更改为"处理",并在成功验证后禁用该按钮以防止双击.
我稍微修改了(手动包含4行)yii.activeForm.js文件,它在我需要的方式下运行良好.
submitForm: function () {
var oldtext= $('#smartbtn').text(); // manually included
$('#smartbtn').text('Processing...'); // manually included
var $form = $(this),
data = $form.data('yiiActiveForm');
if (data.validated) {
// Second submit's call (from validate/updateInputs)
data.submitting = false;
var event = $.Event(events.beforeSubmit);
$form.trigger(event);
if (event.result === false) {
data.validated = false;
submitFinalize($form);
return false;
}
updateHiddenButton($form);
$('#smartbtn').attr('disabled', 'disabled');// manually included
return true; // continue submitting the form since validation passes
} else {
$('#smartbtn').text(oldtext); // manually included
// First submit's call (from …
Run Code Online (Sandbox Code Playgroud) 我正在使用Yii2的高级模板,并在向服务器发送登录表单时寻找显示"请稍候..."消息的对话框的方法.
这是我的活动表单代码:
<?php $form = ActiveForm::begin([
'id' => $model->formName(),
'enableAjaxValidation' => true,
]); ?>
<fieldset>
<?= $form->field($model, 'username', [
'inputOptions' => [
'placeholder' => $model->getAttributeLabel('username'),
],
])->label(false); ?>
<?= $form->field($model, 'password', [
'inputOptions' => [
'placeholder' => $model->getAttributeLabel('password'),
],
])->label(false)->passwordInput() ?>
<?= $form->field($model, 'rememberMe')->checkbox() ?>
<?= Html::submitButton('Login', ['class' => 'btn btn-lg btn-success btn-block', 'name' => 'login-button']) ?>
</fieldset>
<?php ActiveForm::end(); ?>
Run Code Online (Sandbox Code Playgroud)
我的服务器端操作:
public function actionLogin()
{
if (!\Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) …
Run Code Online (Sandbox Code Playgroud) 我的yii2应用程序中有一个下拉列表,它从数据库表中获取数据.现在我想在我的下拉列表中添加一个额外的选项,值为1,显示= admin
我目前的下拉列表是:
<?= Html::dropDownLIst('assign_to', null,
ArrayHelper::map(PhCrmUser::findAll(['user_type' => 'executive_manager', 'status' => CrmUser::STATUS_ACTIVE]), 'id',
function($model, $defaultValue) {
return $model['first_name']." ".$model['last_name'];
}
),
['class' => 'form-control', 'prompt' => 'Assign to Manager']
)?>
Run Code Online (Sandbox Code Playgroud)
它显示输出为
<select class="form-control" name="assign_to">
<option value="">Assign to Manager</option>
<option value="8">Matt Demon</option>
<option value="10">Vinit Singh</option>
<option value="14">dsfds sdfsdf</option>
</select>
Run Code Online (Sandbox Code Playgroud)
现在我想在我的下拉列表中添加和额外的静态选项如何在yii中实现它.我的输出应该是这样的.
<select class="form-control" name="assign_to">
<option value="">Assign to Manager</option>
<option value="1">Admin</option>
<option value="8">Matt Demon</option>
<option value="10">Vinit Singh</option>
<option value="14">dsfds sdfsdf</option>
</select>
Run Code Online (Sandbox Code Playgroud)