Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按键时禁用ajax表单按钮_Javascript_Css_Ajax_Google Chrome - Fatal编程技术网

Javascript 按键时禁用ajax表单按钮

Javascript 按键时禁用ajax表单按钮,javascript,css,ajax,google-chrome,Javascript,Css,Ajax,Google Chrome,我在Ajax表单上有一个按钮,当按下该按钮时,它会向用户指示它正在搜索一个小按钮,以便在查询数据库时让用户一直处于空闲状态 单击“提交”按钮时,它将转到一个函数。该函数将禁用该按钮,收集表单上填写的内容,非异步执行Ajax调用——这意味着脚本将在继续下一行代码之前等待调用完成,然后重新启用该按钮 像这样: function CheckForm() { disableButton(document.getElementById("save")); ....... lots of

我在Ajax表单上有一个按钮,当按下该按钮时,它会向用户指示它正在搜索一个小按钮,以便在查询数据库时让用户一直处于空闲状态

单击“提交”按钮时,它将转到一个函数。该函数将禁用该按钮,收集表单上填写的内容,非异步执行Ajax调用——这意味着脚本将在继续下一行代码之前等待调用完成,然后重新启用该按钮

像这样:

function CheckForm()
{
    disableButton(document.getElementById("save"));


    ....... lots of instructions in here ........
    ....... Loops through every form el .........


    //Ajax called
    CallAjax(sUrls, sParams);

    enableButton(document.getElementById("save"));

}


function disableButton(element)
{
    try
    {
        disabledEl = element.id
        disabledElOrigTxt = element.value;
        element.value = '    Loading...'

        addClass(element, "pleaseWait");
        addClass(document.myForm.reset, "resetWait");

        element.disabled = true;
        document.myForm.reset.disabled = true;

        //return true;
    }
    catch(e)
    {
        ////SHHHHHH
    }   
} 

function enableButton(element, timer)
{
    try
    {
        if(element.value == '  Loading...')
            element.value = disabledElOrigTxt;  

        removeClass(element, "pleaseWait");
        removeClass(document.myForm.reset, "resetWait");
        element.disabled = false;
        document.myForm.reset.disabled = false;
        clearTimeout(timer);
        return true;
    }
    catch(e)
    {
         ////SHHHHHH
    }
}


function hasClass(element, className)
{
    var classes = element.className.split(' ');
    var len = classes.length;
    for (var i=0; i<len; i++) 
    {
    if (classes[i] == className)
        return true;
    }
    return false;
}

function addClass(element, className)
{
    if (!hasClass(element, className))
        element.className = (element.className == '' ? className : element.className + ' ' + className);
}

function removeClass(element, className)
{
    var newValue = '';
    var classes = element.className.split(' ');
    var len = classes.length;
    for (var i=0; i<len; i++)
    {
    if (classes[i] != className)
            newValue += newValue.length ? ' ' + classes[i] : classes[i];
    }
    element.className = newValue;
}
这适用于Mozilla,IE,但不适用于CHROME。有人知道为什么吗

如果我在最后一行修改disableButton并使其成为alerthi,在Chrome中,我可以观察到按钮的变化。。。。但前提是我在那里发出警报来停止脚本。显然这不是我想要做的。

也许你的CallAjax函数在Chrome中异步工作

另一种可能是,Chrome处理它的速度太快,以至于你没有注意到变化?

可能你的CallAjax函数在Chrome中异步工作


另一种可能性,也许Chrome处理得太快了,你没有注意到变化吗?

使用jQuery,这将是一个2行程序。没错,我已经修改了这个,但因为它太不同了,现在根本不起作用,我在这里创建了一个不同的问题:[link]使用jQuery,这将是一个2行程序。没错,我已经修改了这个,但因为它太不同了,现在,这一切都不起作用了,我在这里提出了一个不同的问题:[链接]我真的相信在Chrome中并没有对async的尊重:false。我观察到它在代码中分支,并在评估响应之前继续处理指令。我真的相信在Chrome中没有对async:false的尊重。我观察到它在代码中分支,并在评估响应之前继续处理指令。