2009-07-22 15 views
1

JavaScriptを使用してフォームを検証しようとしていますが、フィールドの横にメッセージを表示して「このフィールドは必須です」と表示されません。これをどうやって行うのですか?申し訳ありませんが、私はJavaScriptの新機能です。 ここに私のJSコードだ:JavaScriptを使用したフォームの検証

var allFieldsRequired = true; 
function specialPostcode(postalCode) 
{ 
    var re = /^[TA]{2}([1-14]|22|15){1,2}/; 
    if(re.test(postalCode)) 
    { 
     alert("You have been entered into a competition to win special prize!!"); 
    } 

} 

function validatePostcode(postalCode) 
{ 
    var re = /^[A-Z]{2}\d{1,2}\s\d{1}[A-Z]{2}$/; 
    if(!re.test(postalCode)) 
    { 
     alert('Postcode is not valid'); 
    } 
    return re.test(postalCode); 
} 

function validateCard(promoCardNumber) 
{ 
    var re = /^[A-Z]{1}([A-Z]|\d){4}\s?([A-Z]|\d){5}\s?([A-Z]|\d){3}\d{1}$/; 
    if(!re.test(promoCardNumber)) 
    { 
     alert('Promotional card number is not valid'); 
    } 
    return re.test(promoCardNumber); 
} 

function validate(val) 
{ 
    if(val == "") 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

function verification(orderForm) 
{ 
//set boolean flag 
var valid = true; 
if(allFieldsRequired) 
{ 
    // validations 
    if(valid) 
    { 
     valid = validatePostcode(orderForm.postalCode.value); 
    } 
    if(valid) 
    { 
     valid = validateCard(orderForm.promoCardNumber.value); 
    } 
    if(valid) 
    { 
     valid = validate(orderForm.firstName.value); 
    } 
    if(valid) 
    { 
     valid = validate(orderForm.surname.value); 
    } 
    if(valid) 
    { 
     valid = validate(orderForm.phoneNumber.value); 
       } 
    if(valid) 
    { 
     valid = validate(orderForm.streetName.value); 
    } 
    if(valid) 
    { 
     valid = validate(orderForm.city.value); 
       }               
    if(valid) 
    { 
     valid = validate(orderForm.billEmailAddress.value); 
    } 
    if(valid) 
    { 
     valid = validate(orderForm.billPhoneNumber.value); 
    } 
    if(valid) 
    { 
     valid = validate(orderForm.billCardNumber.value); 
    } 
    if(valid) 
    { 
     specialPostcode(orderForm.postalCode.value); 
    } 

} 
else 
{ 
    // validations 
    if(valid) 
    { 
     valid = validatePostcode(orderForm.postalCode.value); 
    } 
    if(valid) 
    { 
     valid = validateCard(orderForm.promoCardNumber.value); 
    } 
    if(valid) 
    { 
     specialPostcode(orderForm.postalCode.value); 
    } 
} 
return valid; 
} // end of verification 

これは、フォームのための私のHTMLコードです:あなたは検証メッセージのためにそれを使用できるように

<form id="orderForm" method="post" action="x"> 
      <table id="formTable" cellpadding="5"> 
       <tr> 
        <td> 
         <h3>Shipping and Billing Information</h3> 
        </td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td>First Name</td> 
        <td><input id="firstname" type="text" name="firstName" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>Surname</td> 
        <td><input id="surname" type="text" name="surname" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>Contact Telephone Number</td> 
        <td><input id=phoneNumber" type="text" name="phoneNumber" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>Street Name</td> 
        <td><input id="streetName" type="text" name="streetName" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>City</td> 
        <td><input id="city" type="text" name="city" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>Postal Code</td> 
        <td><input id="postalCode" type="text" name="postalCode" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>Email address</td> 
        <td><input id="emailAddress" type="text" name="emailAddress" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>Contact Telephone Number</td> 
        <td><input id="billPhoneNumber" type="text" name="billPhoneNumber" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>Promotional card</td> 
        <td><input id="promoCardNumber" type="text" name="promoCardNumber" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>Credit Card Number</td> 
        <td><input id="billCardNumber" type="text" name="billCardNumber" maxlength="30" /></td> 
       </tr> 
       <tr> 
        <td>Credit Card Type</td> 
        <td> 
         <select id="billCardType" name="billCardType"> 
          <option value="..."> 
           Choose your card... 
          </option> 
          <option value="visa"> 
           Visa 
          </option> 
          <option value="mastercard"> 
           Mastercard 
          </option> 
         </select> 
        </td> 
       </tr> 
       <tr> 
        <td>Instructions</td> 
        <td><textarea id="instructions" name="instructions" rows="8" cols="30">Enter your requirements here or comments.</textarea></td> 
       </tr> 
       <tr> 
        <td colspan="2"><input id="submit" type="submit" name="Submit" value="Submit" onclick="return verification(document.getElementById('orderForm'));" /></td> 
       </tr> 
      </table> 
     </form> 
+0

少なくとも*試してください*。アラートの何が問題なのですか? –

答えて

3

は、各フィールドの近くのスパンを追加します:

<td>First Name</td> 
<td> 
    <input id="firstname" type="text" name="firstName" maxlength="30" /> 
    <span id="firstname_error"/> 
</td> 

その後、エラーメッセージを追加してください。

alert('You need to complete this field') 

あなたが使用します。バリデーションフォームフィールドの

document.getElementById('firstname_error').innerHTML = 'You need to complete this field' 
0

あなたの方法は、すべてで最適化されていないunnededと肥大化したコードの多くは、絶対にひどいです。

私は強くあなたがreadyly利用可能FormValidationスクリプトのいくつかの並べ替えを使用するか、あなたのコードは次のように見ることができる(プラスあなたもメッセージがフィールドの横に表示するために取得)のjQueryを使用してthis jQuery plugin
を見てreccomendます

$("#signupForm").validate({ 
    rules: { 
     firstname: "required", 
     lastname: "required", 
     username: { 
      required: true, 
      minlength: 2 
     }, 
     password: { 
      required: true, 
      minlength: 5 
     }, 
     confirm_password: { 
      required: true, 
      minlength: 5, 
      equalTo: "#password" 
     }, 
     email: { 
      required: true, 
      email: true 
     } 
    } 
}) 
+0

絶対にひどい?そうだね!あなたがそれにいる間、貧しい人に炭疽菌を郵送してみませんか? –

+0

誰かを侮辱することは、たとえ情報が良好であっても、あなたが話している情報を受け入れる良い方法ではありません。 –

+0

私はJQueryを使って検証プラグインを試してみましたが、正規表現を使用して検証された郵便番号の特定の基準をユーザーが満たしていれば、送信時にプロモーションメッセージを追加する方法はありませんでした。私はsubmitHandlerを使用する必要があることを知っているが、コードを書く方法がわからない –

2

最も簡単な方法はとても

JavaScriptで
<input .... /> <br /> 
<span id="fieldname" style="display: none;">This field is required</span> 

あなたはこの

を行うことができますように、入力フィールドの下に隠されたspanタグを置くことです
if(!valid) 
{ 
    document.getElementById("fieldname").style = "block"; 
} 
0

jQueryコードを調べました。比較的簡単な検証のために何千ものコード行のように見えます。簡単な検証のためにプラグインを使用することはお勧めできません。

+0

あなたはあまりにもプラグインを参照していますか? – DaveHogan