ATK4 Form datePicker — состояние по умолчанию «открыто», можно ли это изменить?

Я использую следующую форму, и каждый раз, когда страница открывается (она находится в расширителе в сетке), 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 в качестве своего первого (видимого) поля, которое не отображает это поведение. Я упоминаю об этом только потому, что это похоже на проблему «фокуса»? т.е. первое поле получает фокус?

Любые мысли о том, что вызывает это или как это можно исправить?


person Niek Klein Kromhof    schedule 29.10.2013    source источник


Ответы (1)


На самом деле это состояние поля «в фокусе», а не по умолчанию. Ваша форма имеет только одно поле, и это (первое) поле выбирается при загрузке страницы.

Это поведение добавлено здесь:

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'));
person Vadym    schedule 29.10.2013
comment
На самом деле я смотрел на эту функцию и задавался вопросом, но тот факт, что это была функция «addCalendarIcon», заставил меня усомниться в том, что это то, что я искал. Ваше предложение сработало как шарм, спасибо. - person Niek Klein Kromhof; 29.10.2013
comment
почему я просто не попытался раскомментировать это, чтобы посмотреть, что произойдет? Я тоже не знаю, увидел что-то блестящее, отвлекся и наверное пошел дальше :-) - person Niek Klein Kromhof; 29.10.2013