2013-10-14 7 views
0

내 프로젝트에서 사용자가 등록하는 동안 해당 사용자의 전자 메일 ID가 유효한지 확인하고 있습니다. 유효하지 않거나 Javascript를 사용하고 있습니다. 단추를 클릭하고 확인하는 동안 기능에서 텍스트 상자의 값을 얻고 있습니다. 버튼의 클릭시는 마이크로 소프트의 JScript 런타임 오류를 보여줍니다 개체 중 하나가 내 코드에서 잘못된 것이 무엇인지 지적 할 수 오류를 요구, 컨트롤 경우자바 스크립트 개체 필요

내 자바 스크립트 기능은,

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 
} 
+1

당신은 오류의 라인/행 번호가 있나요? – geevee

+0

당신은 ASPX/HTML 마크 업을 게시 할 수 있습니까 –

+0

@ GalV 어떤 줄 번호도 줄 수 없습니다 – Rajesh

답변

2

확인 그렇다면 "runat=server"입니다. 렌더링 된 html 컨트롤 이름은 li이어야합니다. ke : # ctl00_ContentPlaceHolderMain_emailid.

이 변경 시도 : 이것에

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

:

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

클라이언트 ID는 당신에게 컨트롤이 콘텐츠 패널 내부에있는 경우 전체 이름을 제공 할 것입니다.

다른 쪽에서는 속성 obj.focus()을 사용하고 있고 obj이 범위 내부에 선언되어 있지 않습니다.

+0

내 실수는 Textbox에 초점을 맞추고있었습니다. – Rajesh

+0

안녕하세요. Var txt = document.getelementId (" ctl00_ContentPlaceHolderMain_emailid "). value' 그리고 완벽하게 작동했습니다. 오류를 지적 해 주셔서 감사합니다. – Rajesh

+0

당신은 @Rajesh입니다. 컨트롤이 runat = server이고 컨텐트 홀더 패널 안에 다른 이름으로 렌더링됩니다.) –

2

obj 오브젝트 (예 : obj.focus())를 말하는 것 같지만 선언이 없습니다. 이로 인해 오류가 발생할 수 있습니다. 텍스트 요소가있는 경우

또한, runat="server" - 당신이, 당신이 .NET에 의해 생성 된 ClientID를 사용해야 C#을 사용하고 있기 때문에 당신이 document.getElementById('<%= emailid.ClientID %>')

+0

죄송합니다. 실수 한 경우 Textbox에 초점을 맞추고있었습니다. – Rajesh

2

으로 참조해야

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

0

당신이 있습니까 서버 측 컨트롤을 사용하여 이메일 주소를 입력 하시겠습니까? 왜냐하면 페이지가 렌더링 될 때 ID가 변경되기 때문에 사용해야합니다.

document.getElementById('<%= emailid.ClientID%>') 
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; 
}