我正在使用以下表单,每次页面打开时(它位于网格上的扩展器中),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作为他们的第一个(可见)字段,不显示此行为。我只提到它,因为它看起来像一个“焦点”问题?即第一个领域得到关注?
有关导致此问题或如何解决问题的任何想法?
答案 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'));