2011-01-02 22 views
0

Ich habe ein Formular, das mit HTML validiert ist, ich habe paar Funktionen einige von ihnen können auf das Formular zugreifen und die anderen können nicht!Javascript und HTML-Formulare

hier ist meine Form:

<form id="contactForm" action="javascript:submitForm()" method="post"> 
    <table align="center"> 
     <tr> 
      <th>Name:</th> 
      <td><input type="text" id="name" name="name" value="a" /></td> 
     </tr> 
     <tr> 
      <th>email:</th> 
      <td><input type="text" id="email" name="email" value="[email protected]" /></td> 
     </tr> 
     <tr> 
      <th>Message:</th> 
      <td><textarea type="text" id="message" name="message">msg</textarea></td> 
     </tr> 
     <tr> 
      <td colspan="2"><input type="submit" value="Login" /></td> 
     </tr> 
    </table> 
</form> 

und das ist mein Skript, es in zwei Teile geteilt ist, einer von ihnen mit der Form in der gleichen Datei ist und der andere in einer anderen Datei:

das ist der Teil mit der Form:

<script type="text/javascript"> 
function check() 
{ 
    name = document.getElementById('name').value; 
    email = document.getElementById('email').value; 
    message = document.getElementById('message').value; 
    if(name.length == 0 || email.length == 0 || message.length == 0) 
    { 
     alert("Name Required\nEmail Required\nMessage Required"); 
     return false; 
    } 
    else 
    { 
     var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
     var address = email; 
     if(reg.test(address) == false) 
     { 
      alert("Email Invalid"); 
      return false; 
     } 
    } 
    return true; 
} 

var form; 

function submitForm() 
{ 
    if(check() == false) 
     return false; 
    else 
    { 
     form = document.getElementById('contactForm').innerHTML; 
     document.getElementById('contactForm').innerHTML = "<h3>Sending ...</h3>"; 
     send(); 
     setTimeout("restoreForm()",1000); 
    } 
    return false; 
} 

function restoreForm() 
{ 
    document.getElementById('contactForm').innerHTML = form; 
} 
</script> 

und dies ist in der Datei:

// JavaScript Document 
function createObject() 
{ 
    var request_type; 
    var browser = navigator.appName; 
    if(browser == "Microsoft Internet Explorer") 
    { 
     request_type = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    else 
    { 
     request_type = new XMLHttpRequest(); 
    } 
    return request_type; 
} 

var http = createObject(); 
var usr; 
var psw; 
function send() 
{ 
    alert(document.getElementById('name').value); 
    alert(document.getElementById('email').value); 
    alert(document.getElementById('message').value); 

    contactName = encodeURI(document.getElementById('name').value); 
    contactEmail = encodeURI(document.getElementById('email').value); 
    contactMessage = encodeURI(document.getElementById('message').value); 
    http.open('get', 'send.php?name='+contactName+'&email='+contactEmail+'&message='+contactMessage); 
    http.onreadystatechange = loginReply; 
    http.send(null); 
} 

function loginReply() 
{ 
    if(http.readyState == 4) 
    { 
     var response = http.responseText; 
     alert(response); 
     if(response == 0) 
      //document.getElementById('submitForm').innerHTML = "<h6>Sending Failed</h6>"; 
      alert('failed'); 
     else 
      //document.getElementById('submitForm').innerHTML = "<h6>Message Sent</h6>"; 
      alert('sent'); 
     //setTimeout("restoreForm()",1000); 
    } 
} 

Hilfe benötigen, um das Skript aus der Datei Zugriff auf die Formularfelder.

UPDATE:

Ich habe es geschafft, dieses Problem zu lösen. Das Problem ist in dieser Funktion

function submitForm() 
{ 
    if(check() == false) 
     return false; 
    else 
    { 
     form = document.getElementById('contactForm').innerHTML; 
     document.getElementById('contactForm').innerHTML = "<h3>Sending ...</h3>"; 
     send(); 
     setTimeout("restoreForm()",1000); 
    } 
    return false; 
} 

Die Funktion send() zu einer anderen Seite verbinden und sendet Daten durch sie eine E-Mail, wenn ich die innerHTML des form geändert haben vor dem Aufruf der Funktion die Funktion break gemacht, wenn versuchen, den Zugang ein Feld, das nicht existiert.

+0

Was genau ist passiert? Erhalten Sie Fehler? Läuft dein Skript überhaupt? – Oded

+0

nichts! Die Warnungen in der separaten Datei werden nicht ausgeführt, aber das Skript in der gleichen Datei mit dem Formular wird ausgeführt. – sikas

+0

Vielleicht prüfen, ob die andere Datei in Ihrem HTML als Skript-Tag enthalten ist. In der Tat sollten Sie Ihren Kopfabschnitt für uns bekannt geben. – jmort253

Antwort

-1

Warum verwenden Sie JQuery nicht? Der ganze Code, den Sie von Grund auf neu schreiben, ist in eine kleine, enge, wiederverwendbare JavaScript-Bibliothek gepackt, die Ihnen erlaubt, sich auf Ihre Geschäftsziele zu konzentrieren und das Rad nicht neu zu erfinden.

ist Mein Vorschlag http://jquery.com/ zu überprüfen und durch einige Beispiele gehen. Ich glaube, es wird Ihnen in der Zukunft viel Zeit und Kopfschmerzen ersparen.

Denken Sie daran, Ihr Arbeitgeber zahlt Sie Probleme, die weiter ihre Geschäftsziele, nicht lösen die gleichen Probleme, die andere Entwickler für Sie gelöst haben bereits zu lösen.

+0

Ich hatte den gleichen Code mit mir in einem anderen Skript arbeiten. Aber es funktioniert nicht in diesem. – sikas

+0

Ich habe das Problem gelöst, Sie können den Beitrag überprüfen, um die Antwort zu sehen. – sikas

+0

Mit einer kleineren Funktion, der nächste Programmierer, der hereinkommt und übernimmt, lange nachdem du weg bist, wird nicht den gleichen Zeitlachen-Fehler machen, den du gemacht hast, indem du ein ID-Attribut übersehen hast.Es hängt natürlich davon ab, wie viel Zeit man für das Refactoring zur Verfügung hat, aber ich schlage immer vor, Code zu verwenden, der sicherstellt, dass wenn man die Organisation verlässt, um größere und bessere Dinge zu erreichen hebe auf, wo du aufgehört hast. – jmort253

1

ersetzen submitForm in:

document.getElementById('submitForm').innerHTML = "<h6>Message Sent</h6>"; 

Und

document.getElementById('submitForm').innerHTML = "<h6>Sending Failed</h6>"; 

Mit contactForm

+0

Ich habe gefunden, wo der Fehler ist und löste es. Überprüfen Sie den Beitrag, den ich aktualisieren werde. – sikas