Yii2 - 我们如何通过Pjax响应更改将要更新的元素

时间:2016-01-28 11:20:17

标签: yii2 pjax

如何更改将通过服务器响应更新的元素(标记)。

这是我的表格

def get_mode
  if @mode_timeout.nil? or @mode_timeout < Time.now
    @mode = ModeModel.first.mode
    @mode_timeout = Time.now + 60.seconds
  end
  @mode
end

基本上所有<div id="test" class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-header">ورود به سایت</div> <?php \yii\widgets\Pjax::begin(['enablePushState'=>FALSE]); $loginModel=new \common\models\LoginForm(); $form=\yii\bootstrap\ActiveForm::begin([ 'id'=>'form-login', 'options'=>['data-pjax'=>''], 'method'=>'post', 'action'=>['site/login'], ]); echo $form->field($loginModel, 'username')->textInput()->label('نام کاربری'); echo $form->field($loginModel, 'password')->passwordInput()->label('رمز عبور'); echo $form->field($loginModel,'captchaLogin')->widget(yii\captcha\Captcha::className(),[ 'attribute'=>'captchaLogin', 'captchaAction'=>'site/captchaLogin', 'id'=>'captchaLogin', ])->label('کد امنیتی'); ?> <div style="color:#999;margin:1em 0"> برای یادآوری رمز عبور <?= \yii\helpers\Html::a('اینجا کلیک کنید', ['site/request-password-reset']) ?>. </div> <div class="form-group"> <?= \yii\helpers\Html::submitButton('ورود', ['class' => 'btn btn-primary', 'name' => 'login','value'=>'ورود']) ?> </div> <div id="my"></div> <?php \yii\bootstrap\ActiveForm::end(); \yii\widgets\Pjax::end(); ?> </div> </div> </div> 内容都按新内容更新。我希望将所有回复推送到<div id=#test></div>标签,而不是更新anothers。

1 个答案:

答案 0 :(得分:0)

您可以使用 pjax:beforeReplace 方法并推送<div id="my"></div>中的所有内容,而不是<div id=#test></div>

这是documentation link

对于Ex。

$(function(){ $('#test').on('pjax:beforeReplace',function(contents, options){ $('#my').html(contents); }); });

您的js代码可能如下所示。