2012-03-26 4 views
0

Ich habe zwei Textfelder, eines für ein geplantes Datum und das andere für eine geplante Zeit. Ich möchte die Validierung bestehen, wenn beide Textfelder leer sind oder beide Inhalt haben. Ich möchte die Validierung nicht bestehen, wenn nur einer Inhalt hat. Alles funktioniert gut Server-Seite, und der folgende clientseitige Code funktioniert in Chrome ordnungsgemäß.ASP.NET 2.0 Benutzerdefinierte Client Side Validation funktioniert nicht in Internet Explorer

function CheckScheduledDateTime(sender, args) { 
     if (ctl00_MainContent_txtScheduledTime.value!="" || ctl00_MainContent_txtScheduledDate.value!="") 
     { 
      if (ctl00_MainContent_txtScheduledTime.value!="" && ctl00_MainContent_txtScheduledDate.value=="") 
      { 
       args.IsValid=false; 
       alert("Scheduled date is required"); 
      } 
      else if (ctl00_MainContent_txtScheduledTime.value=="" && ctl00_MainContent_txtScheduledDate.value1!="") 
      { 
       args.IsValid=false; 
       alert("Scheduled time is required"); 
      } 
      else 
      { 
       args.IsValid=true; 
      } 

     } 
     else 
     { 
      args.IsValid = true; 
     }   
    } 

im Internet Explorer funktioniert es nicht, und ich bin den folgenden Fehler erhalten:

"Microsoft JScript-Laufzeitfehler: 'ctl00_MainContent_txtScheduledTime' ist nicht definiert"

Das Merkwürdige ist, mit Es ist in Visual Studio kaputt gegangen, wenn ich dann noch einmal reintrete, bricht es wieder ab, aber wenn ich dann ein drittes Mal versuche es zu tun, läuft es und die Validierung funktioniert einwandfrei.

Kann jemand etwas Licht darauf werfen?

+1

verwenden Sie document.getElementById ('ctl00_MainContent_txtScheduledTime')? –

+0

Dieser Code wurde tatsächlich aus dem Browser gerenderten Code genommen, ich verwende '<% = txtScheduledTime.ClientID%>. Value' an allen Stellen, an denen Sie' ctl00_MainContent_txtScheduledTime.value' sehen, ebenfalls für das Datumsfeld. Ich verwende nicht document.getElementById. – fourdam

+0

Wechseln zu 'if (document.getElementById (' <% = txtScheduledTime.ClientID%> '). Value! = "" || document.getElementById (' <% = txtScheduledDate.ClientID%> '). Value! = "") 'hat ein Vergnügen gemacht, danke! – fourdam

Antwort

1

Sie können es wie dieses

ctl00_MainContent_txtScheduledTime sind kein Javascript-Variablen verwenden, bis Sie sie

mit initialisieren
var ctl00_MainContent_txtScheduledTime = document.getElementById('<%=txtScheduledTime.ClientID%>'); 

oder Sie können es wie

(document.getElementById('<%=txtScheduledTime.ClientID%>').value!="" || document.getElementById('<%=txtScheduledDate.ClientID%>').value!="") 

Grüße verwenden.