【问题标题】:Work around Flatpickr input required and fill form with JS bookmarklet解决所需的 Flatpickr 输入并使用 JS 小书签填写表单
【发布时间】:2018-10-19 01:04:09
【问题描述】:

我正在尝试通过使用 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>

【问题讨论】:

    标签: javascript autocomplete bookmarklet autofill flatpickr


    【解决方案1】:

    似乎不是你的台词:

    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 上的文档。)

    【讨论】:

    • 感谢您的回复,舒格!我完全按照您的描述尝试了这些线条(以及我能想到的任何变化)。不幸的是,我仍然无法让它工作。我正在使用 iOS 快捷方式来测试网页上的脚本,当我在您键入时运行这些行时,它给了我以下错误:“TypeError: undefined is not an object (evalating 'i("start-date" )._flatpickr.setDate')”。我希望 Flatpickr 文档对我有很大帮助,但由于我对 JS 的了解极其有限,我无法理解它。
    • 好了,按照我的方式来吧。 (1) 转至flatpickr Date Time example。 (2) 试试这个代码:document.querySelector("input[data-id='datetime']")._flatpickr.setDate("2018-10-17 11:30", true); 可以吗?
    • 好吧,事实证明,也许使用 iOS 快捷方式来测试这是一个错误,对于浪费您的任何时间,我深表歉意!您最初建议的小书签代码可以完美运行,您上面评论中的示例代码也是如此。为了灵活性,我有点希望使用快捷方式来实现表单填充器而不是书签(执行诸如根据我的日历中的项目自动填写日期/时间之类的事情)。关于为什么从共享表扩展运行的快捷方式可能会抛出 TypeError 的任何猜测,而小书签工作得很好?
    • 我对上面提到的软件不熟悉。也许它需要window.document 而不是document - 不知道。顺便说一句,如果网络自动化更复杂,我更喜欢使用“iMacros for Chrome”(或“iMacros for Firefox”)免费扩展。
    • 我得看看 iMacros,谢谢!我也会试试window.document。非常感谢你的帮助。我还会将此问题提交给reddit.com/r/shortcuts,它处理我提到的那个特定软件。
    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2016-02-27
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多