[英]setting focus following validation of field with onblur not working
在花了一个小时或更长时间寻找其他选择之后,我空了出来。 一旦失去焦点,就会调用一个函数,在验证失败时将焦点重新设置到调用字段的部分不起作用...
此处的示例: http : //owenparker.com/test/testval.php
var emptyString = /^$/; function validatePresent(valfield, infofield) { var stat = commonCheck(valfield, infofield, true); if (stat != proceed) return stat; msg(infofield, "warn", ""); return true; } var proceed = 2; function commonCheck(valfield, infofield, required) { if (!document.getElementById) return true; // not available on this browser - leave validation to the server var infoelem = document.getElementById(infofield); if (!infoelem.firstChild) return true; if (infoelem.firstChild.nodeType != Node.TEXT_NODE) return true; if (emptyString.test(valfield.value)) { if (required) { msg(infofield, "error", "ERROR: required"); setfocus(valfield); return false; } else { msg(infofield, "warn", ""); // OK return true; } } return proceed; } function msg(fld, msgtype, message) { var dispmessage; if (emptyString.test(message)) dispmessage = String.fromCharCode(160); else dispmessage = message; var elem = document.getElementById(fld); elem.firstChild.nodeValue = dispmessage; elem.className = msgtype; } function setFocusDelayed() { global_valfield.focus(); } function setfocus(valfield) { // save valfield in global variable so value retained when routine exits global_valfield = valfield; setTimeout( 'setFocusDelayed()', 100 ); }
<table border=0 width=500px> <tr> <td>Misc 1: <input name="misc1" id="misc1" type="text" size="10" tabindex=1 autofocus onblur="validatePresent(this, 'inf_misc1');"> <div id="inf_misc1"> </div> </td> </tr> <tr> <td>Whatever: <select name="whatever" id="whatever" tabindex=2 onblur="validatePresent(this, 'inf_whatever');"> <option value="" SELECTED>Choose</option> <option value="OPT1">Option 1</option> <option value="OPT2">Option 2</option> </select> <div id="inf_whatever"> </div> </td> </tr> </table>
尝试这个:
function setfocus(valfield)
{
setTimeout( function () {
valfield.focus();
}, 100 );
}
使用全局变量将闭包传递给setTimeout
w / o。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.