【问题标题】:Trigger field validation触发字段验证
【发布时间】:2014-08-21 21:31:44
【问题描述】:

我正在尝试借助greasemonkey 脚本来填充网站。 该网站有一些必填字段,未填写时无法提交。

现在,我有以下问题:
我使用 jQuery 的.val 填写必填字段。当我现在单击提交按钮时 - 即使是手动使用鼠标 - 然后它说某些必填字段未填写。
当我用鼠标单击其中一个受影响的字段,然后再次单击提交按钮时,它会接受该值并继续。

我的问题是:
我如何确定网站监听的是哪个事件?或者:
如何触发脚本中的字段验证?

更新:我直接在 Chrome 的开发者工具控制台中尝试了以下命令:

jQuery('#ext-comp-1080').click().focus().focusin()
                        .val('my value').change().blur().focusout()

【问题讨论】:

标签: javascript jquery


【解决方案1】:

大多数情况下,验证与blur 事件相关联。

在 jQuery 中,你会使用:

$('#thingToBlur').blur();

也就是说——我从未通过 UserScript 触发过事件,所以我不确定它们是否会正确命中 unsafeWindow 中的元素。

如果您需要在页面上强制运行 JavaScript(包括触发那里的事件),请参阅以下问题:

UserScripts & Greasemonkey: calling a website's JavaScript functions

【讨论】:

  • 谢谢,但这不起作用。为简单起见,我只是打开页面并启动 Chrome 的开发人员工具进行测试,然后直接在控制台中输入我的代码。像这样,我相信您的链接中提到的问题不应该适用 - 我正确吗?无论如何,因为我已经尝试过这些“明显”的事件,所以我问是否有办法弄清楚是什么触发了该特定网站上的验证。
  • 如果常见的事情不触发它,唯一的另一个真正的选择是阅读源......
  • 我用我正在使用的代码更新了我的问题。也许你看到了一些明显的东西。阅读代码 - 我试图这样做,但没有事件处理程序,它们似乎是动态附加的。我什至试图在运行时找出附加的处理程序,但这里也没有运气。知道还能去哪里看吗?或者,是否有一种技术可以让我记录对网站内部状态(HTML 或 Javascript)的任何更改?
【解决方案2】:

因为在您使用 .val() 更改文件然后单击某个字段并单击提交后,它很可能会监听 changeblur 事件。

// set value
$(selector).val(value);

// trigger click
$(selector).click();

// trigger change or blur
$(selector).change();

如果你愿意,你也可以做方法链。

【讨论】:

  • 谢谢,但根据我对杰里米的回答的评论,这不适用于该特定网站。
猜你喜欢
  • 1970-01-01
  • 2020-07-15
  • 2016-12-16
  • 1970-01-01
  • 2013-06-15
  • 2011-02-13
  • 2016-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多