【问题标题】:Yii datepicker in gridview filter changes format after ajax requestajax请求后gridview过滤器中的Yii datepicker更改格式
【发布时间】:2013-05-16 16:53:34
【问题描述】:

喜欢这个主题。我在其中一个过滤器中有CGridView 和Yii 的datepicker。我将格式设置为yy-mm-dd,但在我输入值和GridView 后,使用ajax 调整数据 - 格式更改为:dd.mm.yy。这是我的代码:

array(
        'name' => 'confirmStart',
        'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', 
            array(
                'model' => $model,
                'attribute' => 'confirmStart',
                'language' => 'pl',
                'i18nScriptFile' => 'jquery.ui.datepicker-ja.js',
                'htmlOptions' => array(
                    'id' => 'Projects_confirmStart',
                    'dateFormat' => 'yy-mm-dd',
                ),
                'defaultOptions' => array(  // (#3)
          'showOn' => 'focus', 
          'dateFormat' => 'yy-mm-dd',
          'showOtherMonths' => true,
          'selectOtherMonths' => true,
          'changeMonth' => true,
          'changeYear' => true,
          'showButtonPanel' => true,
      )
            ),
            true),
    ),

【问题讨论】:

  • 检查您的模型是否将其转换为这种格式。您在请求后在过滤器字段中看到的是$model$model->search() 之后的confirmStart 字段的值。
  • 我认为我的模型做不到。数据库格式相同,模型中没有任何转换代码。

标签: php yii datepicker format


【解决方案1】:

不知道这是否能解决您的问题,但我在 CGridView 中使用日期选择器时遇到了一些问题。为了解决这个问题,我需要重新安装 datepicker:

在您的 CGridView 中:

'afterAjaxUpdate' => 'reinstallDatePicker',

并在 Cgrid 视图下方添加以下脚本:

Yii::app()->clientScript->registerScript('re-install-date-picker', "
    function reinstallDatePicker(id, data) {
        $('#Projects_confirmStart').datepicker();
    }
");

如果还是不能解决你的问题,你可以试试:

Yii::app()->clientScript->registerScript('re-install-date-picker', "
    function reinstallDatePicker(id, data) {
        $('#Projects_confirmStart').datepicker({ dateFormat: 'yy-mm-dd' });
    }
");

或者(不确定你应该使用哪个)

Yii::app()->clientScript->registerScript('re-install-date-picker', "
    function reinstallDatePicker(id, data) {
        $('#Projects_confirmStart').datepicker('option', 'dateFormat', 'yy-mm-dd');
    }
");

编辑:

要放回日期,您可以尝试使用 javascript 设置日期:

Yii::app()->clientScript->registerScript('re-install-date-picker', "
    function reinstallDatePicker(id, data) {
        $('#Projects_confirmStart').datepicker('option', 'dateFormat', 'yy-mm-dd');
        var start = $('#Projects_confirmStart').val();
        $('#Projects_confirmStart' ).datepicker( 'setDate', start );
    }
");

我真的不确定它会起作用

【讨论】:

  • 嘿!我正在使用({ dateFormat: 'yy-mm-dd' }),但它不起作用。我使用了您答案中的最后一个代码,现在可以使用。我的意思是 - 格式没有改变。但它会导致一个问题 - ajax 更新后,日期从字段中消失。因为我有 3 个日期选择器,如果它留在那里会更好;)可能有什么想法吗?
  • 我更新了我的答案,但我不确定它是否会起作用。请随时通知我!
  • 不。美元符号在 javascript 中不起作用虽然想法很好。如果我用实际日期替换$model->confirmStart - 它确实将数据放在文本区域内。我只需要弄清楚如何获得日期。无论如何,我会接受您的回答,因为您回答了我的基本问题。谢谢!
  • 知道了!我补充说:var start = $('#Projects_projStart').val(); $('#Projects_projStart' ).datepicker( 'setDate', start );。再次感谢!更改答案中的代码,这样任何人都不必阅读此评论。
猜你喜欢
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
相关资源
最近更新 更多