0

每次我失去对 ID 字段的关注时,alert("Start AJAX: " + EmplID);都会调用但 AJAX 调用会进行两次:第二次 ID 字段失去焦点,而不是第一次。所有建议都会有所帮助。

$("#ID").focusout(function() {
    var EmplID = $(this).val();
    alert("Start AJAX: " + EmplID);
    $.ajax({
        type: "POST",
        url: "program_includes/Employee_help.php",
        cache: false,
        data: {
            value: 4,
            id: EmplID
        }
    }).done(function(msg) {
        alert(msg);
        parseScript(msg);
        $.ajax({
            type: "POST",
            cache: false,
            url: "program_includes/Customer_help.php",
            data: {
                value: 4,
                id: $("#Kundennummer").val(),
                Employee: "Yes"
            }
        }).done(function(msg) {
            alert(msg);
            parseScript(msg);
            $("#Name").val($("#customers_Name").val());
        }).fail(function(msg) {
            alert("Fail2 : " + msg);
        });
    }).fail(function(msg) {
        alert("Fail1 : " + msg);
    });
});
4

2 回答 2

0

尝试使用模糊,而不是聚焦。jQuery 文档说如下:

The focusout event is sent to an element when it, or any element inside of it, loses 
focus. This is distinct from the blur event in that it supports detecting the loss of     
focus on descendant elements (in other words, it supports event bubbling).

或在焦点处理程序中使用 event.stopPropagation()

于 2013-09-30T12:49:30.740 回答
0

继从T.J. Crowder

我的建议是不要使用警报进行调试。这不是 1997 年。使用调试器进行调试。您的浏览器中内置了一个。这一直是我的建议,但在这里特别重要,因为警报会干扰焦点逻辑。

除非imo您正在进行移动开发,否则不要使用警报是一个非常明确的观点。您应该使用控制台。所以简单地替换

 alert(); //badness

 console.info(); //goodness, look at the console

然后F12在浏览器中按,您将在控制台中看到日志。即使是最新的 IE 现在也有一个 JS 控制台。

于 2013-09-30T14:24:15.163 回答