Обойдите ввод Flatpickr и заполните форму букмарклетом JS - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь ускорить рабочий процесс заполнения формы веб-страницы с помощью букмарклета Javascript для автоматического заполнения определенных полей.У меня все работает, кроме заполнения пары полей даты / времени, которые контролируются Flatpickr.Вот мой код букмарклета, в основном созданный FormFillerJS.com:

var d=document;
function i(a){
    return d.getElementById(a)}
function n(a){
    return d.getElementsByName(a)[0]}
function e(a){
    t='change';
    if(window.navigator.userAgent.match(/Trident|MSIEs/g)!=null){
        x=d.createEvent('Events');
        x.initEvent(t,1,0);}
    else{
        x=new Event(t);}
    a.dispatchEvent(x);}
function v(a,v){
    a.value=v;e(a)}
function c(a){
    a.checked=true;e(a)}
v(i("start-date"),"2018-10-17 11:30");
v(i("end-date"),"2018-10-17 13:30");
v(n("campus"),"1");
v(i("payroll_addendum_category"),"4");
v(i("payroll_addendum_rate"),"Faculty Rate");
v(i("payroll_addendum_course"),"319");
v(i("payroll_addendum_requested_by"),"John Doe");
v(i("notes"),"My note");
void(0);

Эти две строки ...

v(i("start-date"),"2018-10-17 11:30");
v(i("end-date"),"2018-10-17 13:30");

... не заполняются вообще.Я новичок в этом, но у меня сложилось впечатление, что Flatpickr нужно каким-то образом вызывать.Есть ли способ сделать это с помощью букмарклета JS, или я застрял, выбирая дату / время вручную с помощью интерфейса Flatpickr?

Если это поможет, вот источник, который я вижу вокруг этих двух полей:

<div class="input-label"><input id="start-date" type="hidden" class="required placeholder flatpickr-input" name="start_date" placeholder="Start Date/Time" value="" data-name="my-payroll-create"><input class="required placeholder flatpickr-input flatpickr-mobile" step="any" type="datetime-local" placeholder="Start Date/Time" min="2018-09-18"><input class="required placeholder flatpickr-input form-control input" placeholder="Start Date/Time" type="hidden" readonly="readonly"><div class="placeholder-label">Start Date/Time</div></div></div>
            <div><div class="input-label"><input id="end-date" type="hidden" class="required flatpickr-input" name="end_date" placeholder="End Date/Time" value="" data-name="my-payroll-create"><input class="required flatpickr-input flatpickr-mobile placeholder" step="any" type="datetime-local" placeholder="End Date/Time" min="2018-09-18"><input class="required flatpickr-input form-control input" placeholder="End Date/Time" type="hidden" readonly="readonly"><div class="placeholder-label">End Date/Time</div></div></div>

1 Ответ

0 голосов
/ 20 октября 2018

Кажется, что вместо ваших строк:

v(i("start-date"),"2018-10-17 11:30");
v(i("end-date"),"2018-10-17 13:30");

вы должны использовать что-то вроде этого:

i("start-date")._flatpickr.setDate("2018-10-17 11:30", true);
i("end-date")._flatpickr.setDate("2018-10-17 13:30", true);

Надеюсь, это будет полезно.

(Подробнее см. Документацию по Flatpickr .)

...