【问题标题】:Use data-attribute for form action?使用数据属性进行表单操作?
【发布时间】:2014-01-13 12:08:27
【问题描述】:

我有一个客户非常讨厌验证码,但它是必需的,否则提交的垃圾邮件太多。我有一个人推荐以下内容:

拥有您的网络表单,并且仅在数据标签 (html5) 中包含表单操作,然后在表单完成后提交表单处理该操作的操作。没有表单操作,没有机器人可以填写并提交和无需修改表单的外观或操作方式。

如果我有一个如下所示的表单:

<form action="/FormProcessv2.aspx?WebFormID=10090&amp;OID={module_oid}&amp;OTYPE={module_otype}&amp;EID={module_eid}&amp;CID={module_cid}" enctype="multipart/form-data" onsubmit="return checkWholeForm15174(this)" method="post" name="catwebformform15174">

如何修改操作 URL 以使用数据属性?它需要JS才能运行吗?这个想法如何运作?

注意:我搜索了谷歌,我找不到任何关于使用数据属性和操作的信息。我也在网站上使用 jQuery 2.0.3。

欢迎任何指导。

【问题讨论】:

  • 是的,它需要 Javascript。但如果机器人足够聪明,可以绑定它,我不会感到惊讶。
  • @AndrewBarber - 我实际上发现许多机器人没有执行 javascript,因为它会减慢它们扫描页面的速度。你有一个例子说明这是如何工作的,或者可以给我指出一个有信息的地方吗?此外,如果我能做到这一点,我会对其进行测试,看看垃圾邮件提交的情况,并可以作为编辑或评论报告回来。
  • 这个想法听起来不成熟。我不确定如何将操作隐藏在数据属性中,然后在提交表单时将其换出绕过机器人。大多数机器人可能会尝试自己提交表单,但也只需调用表单提交时执行的相同代码,这也将“解锁”您的隐藏操作。l
  • @AndrewBarber - 作为更新,垃圾邮件提交已从每天 50-100 次变为 0!虽然我知道这并不能完全证明它有助于防止我网站上的垃圾邮件。 =>
  • 酷;听起来这绝对值得!

标签: javascript jquery forms custom-data-attribute


【解决方案1】:

如何在表单提交时工作(当您当前的 checkWholeForm15174 验证时调用此 swapAction)

function SwapAction() {
    var dataAttr = $('#myFormName').data();

    $('#myFormName').get(0).setAttribute('action', dataAttr.action);
}

假设您的表单已修改为:

<form action="" data-action="/FormProcessv2.aspx?WebFormID=10090&amp;OID={module_oid}&amp;OTYPE={module_otype}&amp;EID={module_eid}&amp;CID={module_cid}"  enctype="multipart/form-data" onsubmit="return checkWholeForm15174(this)" method="post" name="catwebformform15174">

【讨论】:

  • 或者,你可以这样写:$('#myFormName')[0].action = dataAttr.action;
  • 是的,我从旧的 SO 帖子中提取了一些旧代码... :-)
  • 感谢您的帮助。我使用@ultraviol3tlux 方法编写脚本。我的垃圾邮件也归零了!虽然我知道它不能完全证明它是有效的。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 2022-07-02
  • 2011-11-16
  • 1970-01-01
相关资源
最近更新 更多