0

在我的项目中,我在注册期间检查用户的电子邮件 ID 是否有效显示Microsoft JScript 运行时错误:Object required error 任何人都可以指出我的代码有什么问题,

我的javascript函数是,

   function mailcheck() {

    var txt = document.getElementById("emailid").value;
    if (txt != "") {
        var at = "@"
        var dot = "."
        var lat = str.indexOf(at)
        var lstr = str.length
        var ldot = str.indexOf(dot)
        if (txt.indexOf(at) == -1) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }

        if (txt.indexOf(at) == -1 || txt.indexOf(at) == 0 || txt.indexOf(at) == ltxt) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }

        if (txt.indexOf(dot) == -1 || txt.indexOf(dot) == 0 || txt.indexOf(dot) == lstr) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }

        if (str.indexOf(at, (lat + 1)) != -1) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }

        if (txt.substring(lat - 1, lat) == dot || txt.substring(lat + 1, lat + 2) == dot) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }

        if (txt.indexOf(dot, (lat + 2)) == -1) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }

        if (txt.indexOf(" ") != -1) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false

        }
    }

    return true
}
4

5 回答 5

2

检查您的控件是否是"runat=server"这样,呈现的 html 控件名称应类似于:#ctl00_ContentPlaceHolderMain_emailid。

尝试改变这个:

var txt = document.getElementById("emailid").value;

对此:

var txt = document.getElementById('<%=emailid.ClientID %>').value;

如果控件位于内容面板内,ClientID 将为您提供全名。

另一方面,您正在访问该属性obj.focus(),但我看不到在范围内声明的obj 。

于 2013-10-14T09:20:48.103 回答
2

似乎您指的是obj对象(如 中obj.focus()),但没有声明它。这可能会导致错误。

此外,如果文本元素有runat="server"- 您必须使用document.getElementById('<%= emailid.ClientID %>')

于 2013-10-14T09:20:57.780 回答
2

由于您使用的是 C#,因此您应该使用由 .NET 生成的 clientID

document.getElementById('<%= emailid.ClientID %>')

于 2013-10-14T09:21:24.477 回答
0

您是否使用服务器端控件来输入电子邮件地址?因为如果你是页面渲染时ID会改变,所以你必须使用

document.getElementById('<%= emailid.ClientID%>') 
于 2013-10-14T09:24:10.760 回答
0

您正在混淆变量名称。str 和 ltxt 定义在哪里?

试试这个:

function mailcheck() {

    var txt = document.getElementById("emailid").value;
    if (txt != "") {
        var at = "@"
        var dot = "."
        var lat = txt.indexOf(at)
        var ltxt = txt.length
        var ldot = txt.indexOf(dot)
        console.log('yeah');
        if (txt.indexOf(at) == -1) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }
        if (txt.indexOf(at) == -1 || txt.indexOf(at) == 0 || txt.indexOf(at) == ltxt) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }

        if (txt.indexOf(dot) == -1 || txt.indexOf(dot) == 0 || txt.indexOf(dot) == ltxt) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }

        if (txt.indexOf(at, (lat + 1)) != -1) {
            alert("Invalid E-mail ID")
            obj.focus()
            return false
        }

        return true;
    }
    return false;
}
于 2013-10-14T09:30:36.020 回答