繁体   English   中英

验证后将焦点设置为文本框表单元素

[英]set focus to textbox form element following Validation

我在执行验证的表单上有多个字段,然后在验证失败时我将重点关注这些字段。 验证工作正常,即rtnStr,但focus()不会落在任何文本框字段(即vCtrl)上。 它保留在“提交”按钮上。

<script language="javascript">

function ValidateForm() {
    var rtnStr = "";
    var vCtrl = "";

    //Contact Details //
    if (document.contactform.txtforename.value == "") {
        rtnStr = rtnStr + " - Please enter your Forename.\n"
        if (vCtrl == "") {
            vCtrl = "txtforename";
        }
    }

    if (document.contactform.txtSurname.value == "") {
        rtnStr = rtnStr + " - Please enter your Surname.\n"
        if (vCtrl == "") {
            vCtrl = "txtSurname";
        }
    }

    if (rtnStr != "") {
        alert(rtnStr)
        window.setTimeout(function () {
            document.getElementById(vCtrl).focus();
        }, 0);
        return false;
    }
    else {
        return true;
    }
}               
</script>

问题在于,vCtrl是一个字符串,它是表单的名称 ,而不是document.getElementById(vCtrl).focus()寻找的id 解决此问题的方法是使vCtrl存储DOM元素而不是文本字符串。

<script  language="javascript">
    function ValidateForm() {
    var rtnStr = "";
    var vCtrl = "";
    //Contact Details //
    if (document.contactform.txtforename.value == "") {
        rtnStr = rtnStr + " - Please enter your Forename.\n"
        if (vCtrl == "") {
            vCtrl = document.contactform.txtforename;
        }
    }

    if (document.contactform.txtSurname.value == "") {
        rtnStr = rtnStr + " - Please enter your Surname.\n"
        if (vCtrl == "") {
            vCtrl = document.contactform.txtSurname;
        }
    }

    if (rtnStr != "") {
        alert(rtnStr)

        vCtrl.focus();

        return false;
    }
    else {
        return true;
    }
}
</script>

的jsfiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM