动态函数调用仅在给出alert()时有效

时间:2014-09-04 08:01:59

标签: javascript function dynamic alert

我有一个Javascript问题,我无法找到答案。希望你能帮帮我。

我有一个名为'scanValue'的元素,它有一个onFocus和一个onBlur触发器:

<input name="scanValue" class="searchFormText" style="width: 220px; font-size: 22px;" onfocus="onFocusElement(this)" onblur="onBlurElement(this)" type="text" maxLength="20" value="510210006823414"/>

如果我跳出字段,则按预期调用onBlurElement()函数:

function onBlurElement(object) {
        alert('onBlurElement: Start blur on ' + object.name + ' (old val = ' + prevObjectVal + ', new val = ' + object.value + ')');

        if (object.value !== prevObjectVal) {
            check(object);

            var checkFcn = 'check' + object.name;
            var fcnParms = [object.value];
            var fcn = window[checkFcn];

            alert('onBlurElement: check if ' + checkFcn + ' is a function: ' + (typeof fcn));
            if (typeof fcn == 'function') {
                alert('fcnParms length = ' + fcnParms.length + '. ToString= ' + fcnParms.toString());
                alert('fcnParms[0] length = ' + fcnParms[0].length + '. ToString= ' + fcnParms.toString());
                fcn.apply(fcn, fcnParms);
            }
        }
    }

现在这个动态函数调用(fcn.apply())应该调用函数'checkscanValue(val)',但没有任何反应。当我向此函数添加alert()或者我启动IE标准开发人员工具时除外。换句话说,如果我跟踪或调试checkscanValue()函数一切正常,否则什么也不做。我尝试了几种不同的东西,但似乎没有任何效果。我怀疑这可能与使用方法帖子提交的表单有任何关系,但也许有人可以帮助我。

checkscanValue()函数的代码:

 function checkscanValue(val) {
        console.info('checkscanValue: start function');
        document.forms[0].airNumber.value = 'test';

        // Check if the scanned value is valid for submitting the form
        if (val[0].length === 15) {
            document.forms[0].submit();
        }
    }

2 个答案:

答案 0 :(得分:0)

除了传递给checkscanvalue函数的“val”参数是用户输入的字符串或默认存在的字符串外,一切正常。

因此val [0]返回字符串的第一个字符,其长度不能为15,因此检查失败并且没有任何反应。

希望它有所帮助!

答案 1 :(得分:0)

这似乎回答了我的问题:'console' is undefined error for Internet Explorer

我一直在使用console.info()函数,如果从未打开IE的控制台窗口,则该函数未定义。这导致功能停止。如果我用alert()替换它显然有效,如果我打开IE的控制台,则定义了console.info函数。