Jquery 为什么GridView过滤器在模式引导时不工作?

Jquery 为什么GridView过滤器在模式引导时不工作?,jquery,gridview,yii2,Jquery,Gridview,Yii2,我使用了模态引导来查看GridView,当我使用过滤器并按下enter键时,它不起作用,它会影响到父窗口按submit/save按钮。为什么? 这是我的jquery函数 $(document).on('ready pjax:success', function() { $('#BtnModalPriceList').click(function(e) { e.preventDefault(); $('#modal').modal('show')

我使用了模态引导来查看GridView,当我使用过滤器并按下enter键时,它不起作用,它会影响到父窗口按submit/save按钮。为什么?

这是我的jquery函数

$(document).on('ready pjax:success', function() {

   $('#BtnModalPriceList').click(function(e) {
        e.preventDefault();

        $('#modal').modal('show')
            .find('#modalContent')
            .load($(this).attr('value'));
   });

});
这是我在父窗体中的模式引导

<?= Html::button('Price List', [
    'value' => Url::to('../pricelist/list'), 
    'class' => 'btn btn-primary', 
    'id'    => 'BtnModalPriceList'
]) ?>

<?php 
    Modal::begin([
            'header' => 'Price List',
            'id' => 'modal',
            'size' => 'modal-md',                        
        ]);

    echo "<div id='modalContent'></div>";

    Modal::end();
?>


我错过了什么

添加:
使用yii\bootstrap\Modal


您应该阅读和

,因为您是通过ajax加载Pjax的(听起来很有趣)。你需要给它分配一个id。通过ajax加载的所有小部件都需要有用户定义的id,以便Yii能够将它们与已加载的小部件区分开来

<?php
$gridColumns = [  
    ['class' => 'yii\grid\CheckboxColumn', 'checkboxOptions' => ['onclick' => 'js:selectItem(this.value, this.checked)']],  
    [
        'attribute' => 'price', 
        'format' => ['decimal', 0],
    ],
    'date',
    [
        'attribute' => 'agen_id',
        'value' => 'agen.agen_name'
    ],        
    'remark_1:ntext',
    'remark_2:ntext',

] ?>
<?php Pjax::begin([
    //add some id here
    'id' => 'your-custom-id'
]); ?> 
<?=
GridView::widget([
    'id' => 'kv-grid-pricelist',
    'dataProvider'=>$dataProvider,
    'filterModel'=>$searchModel,
    'columns'=>$gridColumns,        
]);
?>

我终于让它工作了。感谢facebook上Yii PHP框架社区的成员。 答案是 1.将模态置于活动窗体之外。
2.通过提供id来使用Pjax,例如
Pjax::begin(['id'=>'stav_id','timeout'=>false])

我已经这样做了,模态可以显示出来,但我不能过滤它。并且把你的模态放在表单之外。
<?php
$gridColumns = [  
    ['class' => 'yii\grid\CheckboxColumn', 'checkboxOptions' => ['onclick' => 'js:selectItem(this.value, this.checked)']],  
    [
        'attribute' => 'price', 
        'format' => ['decimal', 0],
    ],
    'date',
    [
        'attribute' => 'agen_id',
        'value' => 'agen.agen_name'
    ],        
    'remark_1:ntext',
    'remark_2:ntext',

] ?>
<?php Pjax::begin([
    //add some id here
    'id' => 'your-custom-id'
]); ?> 
<?=
GridView::widget([
    'id' => 'kv-grid-pricelist',
    'dataProvider'=>$dataProvider,
    'filterModel'=>$searchModel,
    'columns'=>$gridColumns,        
]);
?>