使用Jquery设置表单跟踪

时间:2012-12-12 11:50:14

标签: javascript jquery forms

我需要设置一个自定义脚本来跟踪用户点击表单提交字段。这是我到目前为止所得到的。当用户向下浏览表单字段时,计数器变量(基数)总计沿用户已到达的路径的距离。我希望在用户离开页面时通过发送基本变量来关闭结果。我正在考虑在jQuery中使用.unload函数。但是出于某种原因,卸载并没有像我认为的那样应对。有任何想法吗?

var base = 0; //declares a variable of 0. This should refresh when a new user lands on the form page. 

function checkPath(fieldNo, path) { //this function should check the current base value of the base variable vs the current fieldNo
    if (fieldNo >= path) { //checks to see if base if lower than fieldNo
        base = fieldNo; //if true, base is set to current fieldNo 
        return base;
    } else {
        return base; //if false, simply returns base. 
    }
};

$('#order_customer_fields_forename').focus(function () { //when the form box is selected should run checkPath then alert result. 
    checkPath(1, base);
});
$('#order_customer_fields_surname').focus(function () {
    checkPath(2, base);
});
$('#order_customer_fields_postcode').focus(function () {
    checkPath(3, base);
});
$('#order_customer_fields_address1').focus(function () {
    checkPath(4, base);
});
$('#order_customer_fields_address2').focus(function () {
    checkPath(5, base);
});

$(window).unload(function () {
    alert(base);
});

1 个答案:

答案 0 :(得分:0)

unload事件对您所需的效果起火太晚。您应该尝试使用vanilla Javascript:

来使用onbeforeunload事件
window.onbeforeunload = function (e) {
    // Your code here
};

或jQuery:

$(window).bind('beforeunload', function (e) {
    // Your code here
});

无论哪种方式,您应该意识到这不是您想要实现的目标的理想解决方案。此事件在浏览器中实现不均匀。在实现中,Chrome似乎是最具限制性的,IE是最宽容的。

您可能想要采取的另一个方向是,只要用户填写字段,XHR就会将数据发送到服务器。