试图用返回的值更新AJAX字段(但必须在更新之前点击离开)

Trying to get AJAX field to update with returned value (But have to click away before it updates)

本文关键字:更新 离开 返回 字段 AJAX      更新时间:2023-09-26

使用AJAX的表单的图像&JS-

我目前有一个使用AJAX的维护人员,所以当我在"订单号"字段中键入一个数字时,"Calc"字段就会更新为与订单号相关的"Account"。这一切都有效,但"计算"字段不会填充帐号,直到点击订单号字段,这意味着如果您在键入数字后按回车键,则在检查帐号和计算数字是否相同时,计算仍然为空。。如果您要键入数字,然后单击"接受"按钮,则会完成更新,因此检查将按预期进行。所以我想知道是否有一种方法可以在不需要额外点击的情况下更新这个字段。

我想出的一个解决方案是进行检查,如account==calc和calc!="两次,这样它就会运行一个函数,在该函数中,检查总是说calc字段为空(因为它目前还没有更新),它会返回一个警报,说"空白",然后在返回警报后,它会运行另一个与再次检查完全相同的函数,这一次它会按预期工作,但一旦警报被删除,它就好像没有得到那样的时刻等待,这允许Calc字段及时更新。

我很难发布所有的代码,因为我使用的系统在幕后为你做所有的AJAX,但让我试着解释一下AJAX是如何工作的。无论您在"订单号"字段中输入了什么,都将被发送到一个外部检索应用程序,该应用程序将检查与订单号关联的帐号,然后将其返回到"计算"字段。如果账户和计算字段编号匹配,则提交表格,否则说明该特定客户的订单编号不正确。

以下是两个JavaScript函数:

function testerRun() {
    var abc = ('${row.CUSN760?html}').toString();
    var def = document.getElementById("CALCULA001").value;
    if (abc == def && abc != "") {
        //alert("Order Number & Account Number Match!");
        document.getElementById('FORM_M07052').submit();
        return true;
    } else if (document.getElementById('ORDN760').value == "") {
        document.getElementById('FORM_M07052').submit();
        return true;
    } else {
        //alert("Blank First Step!");
        finalStep();
    }
}
function finalStep() {
    if (document.getElementById("CALCULA001").value == "") {
        alert("Customers Account Details Need Amending..");
        return false;
    } else {
        var abc = ('${row.CUSN760?html}').toString();
        var def = document.getElementById("CALCULA001").value;
        if (abc == def && abc != "") {
            //alert("Order Number & Account Number Match!");
            document.getElementById('FORM_M07052').submit();
            return true;
        } else if (document.getElementById('ORDN760').value == "") {
            document.getElementById('FORM_M07052').submit();
            return true;
        } else {
            alert("Order Number & Account Number Do Not Match!");
            return false;
        }
    }
}​

这里是脚本的调用位置:

<input class="btn btn-primary accept" id="btnaccept" name="btn_accept" onclick="testerRun();return false" type="submit" value="Accept" /> 

@Shryas很抱歉,我使用的是一个名为MRC的系统,没有模糊或变化,所以他们使用幕后AJAX脚本来处理这样的事情——我也无法访问,所以我需要一些解决办法。这只是当用户在输入订单号后点击订单号字段中的输入而不在表单上做任何其他操作时的问题,因为在取消选择订单号之前,表单不会更新。

document.getElementById('ORDN760').onkeydown = function(event){
    if (event.which == 13 || event.keyCode == 13) {
        document.getElementById('ORDN760').blur();
        testerRun();
    }
}

函数调用不起作用,但似乎什么都没做,只是在模糊之后就停在那里。

在Order No字段上添加一个按键处理程序,该处理程序监听Enter键,并在按下Enter键时提交表单。

document.getElementById('ORDN760').onkeydown = function(event){
    if (event.which == 13 || event.keyCode == 13) {
        document.getElementById('ORDN760').blur();
        return false;
    }
}