需要Javascript对象

时间:2013-10-14 09:17:07

标签: c# javascript

在我的项目中,我正在检查用户在注册期间的电子邮件ID是否有效我使用的是Javascript。我在按钮单击并验证它时获取了文本框中的值,但在点击期间它显示的按钮 Microsoft JScript运行时错误:需要对象错误任何人都可以指出我的代码中出错的地方,

我的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
}

5 个答案:

答案 0 :(得分:2)

检查您的控件是否为"runat=server",如果是,则呈现的html控件名称应为:#ctl00_ContentPlaceHolderMain_emailid。

尝试更改此内容:

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

到此:

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

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

另一方面,您访问了属性obj.focus(),我无法在范围内看到 obj

答案 1 :(得分:2)

好像你指的是obj对象(如obj.focus()中所述),但没有声明它。这可能会导致错误。

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

来引用它

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

您是否使用服务器端控件输入电子邮件地址?因为如果您在页面呈现时ID将会更改,那么您必须使用

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

答案 4 :(得分: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;
}