javascript focus()不工作,也未设置字段值

javascript focus()不工作,也未设置字段值,javascript,lotus-domino,Javascript,Lotus Domino,Notes Domino web表单,验证字段中输入的内容。字段设置为数字,但如果不是数字,我想立即捕获输入的内容。然后我想清除输入的内容,并将焦点放回到字段中。我让代码运行,警报正确出现,但焦点没有发生,值也没有被删除 function checkNumeric(fld, nm) { debugger; var x; x = document.getElementById(fld).value; // If x is Not a Number or

Notes Domino web表单,验证字段中输入的内容。字段设置为数字,但如果不是数字,我想立即捕获输入的内容。然后我想清除输入的内容,并将焦点放回到字段中。我让代码运行,警报正确出现,但焦点没有发生,值也没有被删除

function checkNumeric(fld, nm) {
    debugger;
      var x;
      x = document.getElementById(fld).value;
      // If x is Not a Number or less than one or greater than 10
      if (isNaN(x)) {       
        document.getElementById(fld).value = '';
        alert("Non-numeric entry of '" + x + "' in : " + nm +", please try again.");
        document.getElementById(fld).focus();
      }       
    }

还要确保调用此的事件处理程序设置为防止默认。否则,它可能是获取焦点的元素,但随后会被事件处理程序立即删除

            function checkNumeric(fld, nm) {
            //debugger;
            var x;
            if (typeof fld !== "string") {
                alert("fld is not a string");
            }
            if (typeof nm !== "string") {
                alert("nm is not a string");
            }

            var elm = document.getElementById(fld);
            if (elm) {
                x = elm.value;
                if (isNaN(x)) {
                    elm.value = '';
                    alert("Non-numeric entry of '" + x + "' in : " + nm + ", please try again.");
                    elm.focus();
                }
            }
        }

您确定fld是包含元素id的字符串吗?请给出fld的console.log,因为它是旧的。不要使用ID,而是使用doument.form和输入字段的名称。代码本身看起来是正确的。如果FLD和NM真的是字符串(请使用typeof检查)。作为提示。如果将输入元素放入变量中,可以节省一些键入和计算时间。你计算了三次:)笔记不是旧的,但那无关紧要。会不会是焦点起作用了,但之后会有另一个焦点?例如,是否测试所有字段,并在出现第一个错误时停止?可能返回true或false将帮助您在调用函数中停止计算字段。我现在使用Thomas提供的最后一个代码,它不会发出fld或nm不是字符串的警报,它会识别元素,因为我现在正在清除非数值。唯一的问题是焦点,我不确定如何做他建议的事情,因为我没有使用定制的事件处理程序,只是使用字段的on blur属性。我可以接受这一点,但让我烦恼的是,我无法让光标回到字段中,迫使他们再试一次。马特我经常想知道为什么事情没有按应有的方式进行。Usuall后来发现这只是事件处理中的一个副作用。我会编写一些测试代码,以确定模糊的东西是否真的在您的环境中工作。如果是这样,我会使用chrome浏览器或firefox来跟踪事件处理。您没有提供足够的源来检查它。我有一种“感觉”,在你的代码之外发生了一些事情,激活了另一个字段,因此你的字段立即失去了焦点。谢谢你的建议,托马斯。不幸的是,随着事情的发展,我有太多的事情要做,我无法回到这一点,但我知道我还没有解决它。我会采纳你的建议,把我能分享的东西都贴在这里。