3

我正在使用以下表单,每次打开页面(它位于网格上的扩展器中)时,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 作为它们的第一个(可见)字段,它们不显示这种行为。我只提到它是因为它看起来像一个“焦点”问题?即第一个领域获得焦点?

关于导致此问题的原因或如何补救的任何想法?

4

1 回答 1

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'));
于 2013-10-29T14:49:50.273 回答