ATK4表单datePicker - 默认状态为“已打开”,可以更改吗?

时间:2013-10-29 12:08:26

标签: jquery-ui-datepicker atk4 agiletoolkit

我正在使用以下表单,每次页面打开时(它位于网格上的扩展器中),datePicker都是“打开”,遮住了上面文本的一部分。

function page_del() {
    $billingid  = $_GET['id'];
    $now        = date("Y-m-d H:i:s"); 

    $q = $this->api->db->dsql()
        ->table('billing')
        ->where('id', $billingid)
        ->field('enddate')
        ->getOne();

    if (!$q) {
        $this->add('H5')->set('Are you sure you want to stop billing this item?');
        $form = $this->add('Form');
        $form->addField('hidden','billingid')->set($billingid);
        $form->addField('datePicker','datum')->set($now);
        $form->addSubmit('Confirm');

        if ($form->isSubmitted()) {
            $form->stopBilling('manual', $form, $now);              
            $this->js()->univ()->getjQuery()->trigger('reload_grid')->execute(); 
        }
    } else {
            $this->add('H5')->set('This product has already been stopped, effective date: ' .$q);
            }
        }
}

我在其他地方有其他形式也有一个datePicker作为他们的第一个(可见)字段,不显示此行为。我只提到它,因为它看起来像一个“焦点”问题?即第一个领域得到关注?

有关导致此问题或如何解决问题的任何想法?

1 个答案:

答案 0 :(得分:3)

实际上它是字段状态“onfocus”,而不是默认值。您的表单只有一个字段,并且在页面加载时选择了此(第一个)字段。

此处添加了此行为:

https://github.com/atk4/atk4/blob/master/lib/Form/Field/DatePicker.php#L35

function addCalendarIcon() {
    $this->addButton('',array('options'=>array('text'=>false)))
        ->setHtml(' ')
        ->setIcon('ui-icon-calendar')
        ->js('click',$this->js()->datepicker('show'));
    $this->js('focus', $this->js()->datepicker('show'));
}

您可以在项目中重新定义此方法并删除行

$this->js('focus', $this->js()->datepicker('show'));