2016-10-09 8 views
1

私は入力で別の名前で動作します! フォームで送信をクリックした後にすべて表示エラー<label for="passenger"></label>jQueryバリデーションプラグインを別の名前で入力するには?

どうすれば分けられますか?

例:ホテルの3つの部屋を選択しました。

lenHotel = 3;が変更されました。

追加スクリプト:

<script src="../lib/jquery.js"></script> 
<script src="../dist/jquery.validate.js"></script> 

scriptは次のとおりです。

for(var i = 1; i <= lenHotel; i++) { 
    $("#Step-02").find('#information-box').append(
    "<div class='box-content'>" + 
    "<div class='field-row clearfix'>" + 
     "<label for='passenger'></label> " + 
     "<input id='passenger' name='passenger_" + i +"' required type='text'> " + 
    "</div>" + 
    "<div class='field-row clearfix'> " + 
     "<div class='col-xs-6'> " + 
      "<select id='country' name='country_" + i + "'> "+ 
       "<option value='1'>Country name</option>" + 
       "<option value='2'>Country Name</option>" + 
      "</select>" + 
     "</div>" + 
    "</div>" + 
    "</div>" 
); 
} 

印刷した後、HTMLは次のとおりです。

<div class="box-content"> 
<div class="field-row clearfix"> 
    <label for="passenger"></label> 
    <input id="passenger" name="passenger_1" required="" type="text"> 
</div> 
<div class="field-row clearfix"> 
    <div class="col-xs-6"> 
     <select id="p-status" name="country_1"> 
      <option value="1">Country name</option> 
      <option value="2">Country name</option> 
     </select> 
    </div> 
</div> 
</div> 
<div class="box-content"> 
<div class="field-row clearfix"> 
    <label for="passenger"></label> 
    <input id="passenger" name="passenger_2" required="" type="text"> 
</div> 
<div class="field-row clearfix"> 
    <div class="col-xs-6"> 
     <select id="p-status" name="country_2"> 
      <option value="1">Country name</option> 
      <option value="2">Country name</option> 
     </select> 
    </div> 
</div> 
</div> 
<div class="box-content"> 
<div class="field-row clearfix"> 
    <label for="passenger"></label> 
    <input id="passenger" name="passenger_3" required="" type="text"> 
</div> 
<div class="field-row clearfix"> 
    <div class="col-xs-6"> 
     <select id="p-status" name="country_3"> 
      <option value="1">Country name</option> 
      <option value="2">Country name</option> 
     </select> 
    </div> 
</div> 
</div> 

この検証機能:

$().ready(function() { 
// validate the form when it is submitted 
var validator = $("#form_sample_1").validate({ 
    errorPlacement: function(error, element) { 
     // Append error within linked label 
     $(element).closest("form").find("label[for='" + 
      element.attr("id") + "']").append(error); 
     console.log(error); 
    }, 
    errorElement: "span", 
    messages: { 
     passenger: { 
      required: "Required", 
      minlength: "Your passenger name must be at least 5 characters" 
     } 
    } 
}); 
}); 
+1

同じIDまたは名前で要素をどのように区切っているかを尋ねていますか?複数の要素に同じ名前/ IDを使用できないので、各要素に異なる名前を使用してください。 – adeneo

+0

@adeneoホテルの10の部屋を選択していただきありがとうございます。何をするべきだろう? – mySun

+1

実際には、同じ**名前**を使用することができます**それらが正常に動作するようにするにはラジオボタンのために**そうする必要があります –

答えて

1

問題は、あなたがここに一般化していて、複数の要素に同じidを使用している、次のとおりです。

$(element).closest("form").find("label[for='" + element.attr("id") + "']").append(error); 

ですから、その要素に相対的である何かにそれを変更する必要があります。また、犯罪であるidを複製しているようです。

passengerpassenger_1passenger_2 ...などに変更してください。

"<div class='field-row clearfix'>" + 
    "<label for='passenger_" + i +"'></label> " + 
    "<input id='passenger_" + i +"' name='passenger_" + i +"' required type='text'> " + 
"</div>" + 
+0

どうもありがとうございます。しかし、どうやってjQueryで違うメッセージを表示するのですか? – mySun

+1

@Shayvard 'messages:{ passenger:{'ここでは、 'passenger'を' passenger_1'に変更します。 –

+1

ホテルの10部屋を選択した場合。何をするべきだろう? – mySun

関連する問題