【问题标题】:Run tracking code after validation but before submit在验证之后但在提交之前运行跟踪代码
【发布时间】:2014-08-25 14:26:03
【问题描述】:

有形式。验证函数附加到提交事件,它返回真/假 ($(form).submit(...))。

<form name="f" class="form">
<input type=text name=ff>
</form>

$(".form").submit(function() {
  if ($("[name='ff']").val()==="") {
    return false
  }
  return true;
})

我们想运行一些必须执行的跟踪脚本,以防验证返回 true 但不更改原始验证功能(我们可以从界面启用/禁用跟踪脚本)

  var _this = this;
  ga('send', 'pageview', 'la-la-la', {
    'hitCallback': function() {
        jQuery(_this).parents('form').first().submit();
    }
  })
  return !window.ga;

我该如何正确地做到这一点?

到目前为止,我想取消绑定当前的提交/验证函数并绑定我的函数,并在其中执行验证逻辑,然后运行我的跟踪代码。通过这种方式,我可以轻松禁用/启用跟踪代码,而不会中断逻辑的原始行为。

但是我在这样做时遇到了问题。请指教。我想做这样的事情

var fn = $(.form).submit // get attached logic - and that's does not work
$(.form).unbind('submit') // unbind it from submit
$(.form).submit(function() { // attach my code and reuse old code inside
  my code...
  if (fn()===true) {
    my code...
  }
  my code...
})

【问题讨论】:

    标签: javascript jquery forms validation


    【解决方案1】:

    您应该使用以下代码

    $(form).on("submit", function(f){ //your function here. lets say you add a counter that starts from 0 and your validation functon returns its count. then you would say if (counter != 0){ f.preventDefault(); } //this would stop the form from submitting until a condition on your function is met });

    【讨论】:

    • 它不起作用(或者我做错了什么)。我已经更新了帖子,也许这将有助于更多地描述我的问题。
    • 我不确定我是否正确理解了您的问题,但您应该使用如下内容:$(form).on("submit", function(f){ ga('send', ' pageview', 'la-la-la', { 'hitCallback': function() { if (//callback not successful){ f.preventDefault()
    • 我已经添加了我真正想做的逻辑——从表单中获取当前的验证逻辑; - 从提交中取消绑定 - 绑定我编写的新逻辑并在新逻辑中重用旧逻辑。
    • 使用这个 var fn = $(.form).submit 您正在尝试向事件添加侦听器。它应该是 $("form").submit()。然后您取消提交并尝试再次收听提交(这就是您的代码对我的读取方式)。你应该做的是使用 $("form").on("submit", function(f){});。它将监听提交,并在与属性匹配时能够阻止它。
    【解决方案2】:

    我已经使用 hitCallback 事件解决了

    jQuery(".register-form").on("valid", function(f) {
      var event = "/signup";
    
      var _this = this;
      ga('send', 'pageview', event, {
        'hitCallback': function() {
          _this.submit();
        }
      })
      return !(ga.hasOwnProperty('loaded') && ga.loaded === true);
    })
    

    【讨论】:

      猜你喜欢
      • 2015-03-29
      • 2017-11-16
      • 2014-09-05
      • 1970-01-01
      • 2013-05-19
      • 2017-01-15
      • 2015-03-15
      • 1970-01-01
      • 2011-02-27
      相关资源
      最近更新 更多