2011-12-06 51 views
0

私は、2つの条件が真でなければ何も送信しないようにするべきです。つまり、値がそれぞれの必要なカテゴリに入れられていなければなりません。有効な電話番号が提出されました。フォーム投稿投稿者

代わりに、エラーメッセージが表示されますが、それはどうにかフォームを送信します。私のコードでエラーが表示されない、何かを見ることができますか?

function formValidation() { 

var ids = ["orgname", "cultpicklist", "catpicklist", "servpicklist", "phone", "add1", "url", "state"] // required fields 
    formValue = 1; // value indicating whether to go to the next step of the process, phone number validation. On by default. 

    if (document.getElementById('deletebutton') != null && document.getElementById('orgname').value === "") { 
     formValue = 0; // A separate test for when the delete button is clicked. 
    } 
else { 
for (var i = 0, len = ids.length; i < len; i++) { 
    if (document.getElementById(ids[i]).value === "") { 
     formValue = 0; // Testing each of the list items 
     break; 
    } 
} 
} 

// Here's the part where, if everything else passes checks, we have a regex test for phone number validation 

if (formValue == 1) { 
    phoneVal = document.getElementById("phone"); 
    if (/^\d{3}-\d{3}-\d{4}$/.test(phoneVal) || /^\d{10}$/.test(phoneVal) || /^\(\d{3}\) \d{3}-\d{4}$/.test(phoneVal)) { 
      return true; 
    } 
    else { 
     alert("Please put in a correct phone number"); 
     return false; 
// This shouldn't submit, but does. 
    }} 
    else if (formValue == 0) { 
      alert('Please fill out all required fields'); 
      return false; 
// This also shouldn't submit, but does as well. 
     } 


} 
+0

あなたはこの関数を呼び出しているHTMLの一部を貼り付けることができます。それはonSubmit = "return formValidation()"を持つ必要があります – Pradeep

+0

この関数自体は、一目でうまく見えます。どうやってそれを呼びますか?私はフォーム提出を止めるためには、 "onsubmit"ハンドラから来る必要があると思います。 –

+0

私はいくつかの文脈がありません。この関数をどこで呼びますか? onsubmit? – Iljaas

答えて

1

私はあなたのhtmlにあなたが

このような
<form .... onsubmit="formValidation()"> 

何かを持っていることが

<form .... onsubmit="return formValidation()"> 
+0

これはフォーム提出のために働いたようです。私の正規表現で作業する必要があります! –

+0

@Andrew正規表現に何が間違っていますか?現在、 '123-456-7890'、' 1234567890'、そして最後に '(123)456-7890'を扱っています。 –

+0

「返品」が必要なのはなぜですか? – Navigatron

0

なければならないことを想定していますが、送信ボタンから呼び出され、この関数ますか?

送信ボタンは、javascriptの指示にかかわらずフォームを送信します。プレーンな古いボタンを使用し、フォームのsubmit()関数を使用することを検討してください。

http://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 
     <form name="form" action="no.html"> 
      <input type="button" value="submit" onmousedown="dontSub()" /> 
     </form> 
    </body> 
    <script> 
     function dontSub() { 
      var good = false; 
      if(good) { 
       document.forms["form"].submit(); 
      } 
     } 
     </script> 
</html>