2011-01-02 17 views
0

私はHTMLを使って検証されたフォームを持っていますが、私はそれらのうちのいくつかはフォームにアクセスでき、もう1つはできません!ここjavascriptとhtmlのフォーム

は私のフォームです:

<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> 

、これが私のスクリプトであり、それは、二つの部分に分け、それらの一つは、同じファイルにフォームであり、他方は別のファイルになっている。

これは、フォームと一部です:

<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> 

、これはファイルである:

// 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); 
    } 
} 

は、ファイルからスクリプトをフォームフィールドにアクセスさせるのに役立つ必要があります。

UPDATE:

私はこの問題を解決するために管理しています。問題は、この機能

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; 
} 

send()が別のページに接続する機能であり、機能がbreakに関数を作っ呼び出す前に、私はforminnerHTML変更されたときに、それを介して電子メールで送信するデータを送信するときにアクセスしよう存在しないフィールド。

+0

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

そして

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

?エラーが出ていますか?あなたのスクリプトはまったく動いていますか? – Oded

+0

何もない!別のファイルのアラートは実行されませんが、フォームと同じファイルのスクリプトは実行されます。 – sikas

+0

他のファイルがHTMLにスクリプトタグとして含まれているかどうかを確認することがあります。実際には、私たちのためにあなたの頭のセクションを投稿する必要があります。 – jmort253

答えて

-1

なぜJQueryを使用しないのですか?最初から書いているこのコードは、小さくて丈夫で再利用可能なJavaScriptライブラリにパッケージ化されています。このライブラリは、ビジネスの目標に専念できるように設計されています。

私の提案は、http://jquery.com/をチェックアウトし、いくつかの例を調べることです。私はそれが将来あなたに多くの時間と頭痛を救うと信じています。

あなたの雇用主は、他の開発者がすでに解決している問題と同じ問題を解決するのではなく、ビジネス目標を達成するために問題を解決するためにあなたに支払うことを忘れないでください。

+0

別のスクリプトで私と同じコードを使っていました。しかし、これではうまくいきません。 – sikas

+0

私は問題を解決した、あなたは答えを見るために投稿を確認することができます。 – sikas

+0

小さな関数では、あなたがいなくなってからずっと来て、引き継ぐ次のプログラマーは、あなたがid属性を見落として同じように時間を浪費することはありません。それはもちろん、リファクタリングのために利用可能な時間に依存しますが、私は、あなたが最終的に組織がより大きくてより良いものに移行し、他の人々が簡単にできる状態にしておくことを確実にするコードを使用することを提案しますあなたが中断したところで拾う。 – jmort253

1

submitFormを交換してください:contactForm正確に何が起こっている

+0

エラーがどこにあるのかを見つけて解決しました。投稿を確認して更新します。 – sikas

関連する問題