У меня есть форма, что делает 2 вещи:Jquery проверки с одинаковой формы имен
- Передаёт имя и адрес электронной почты для PHP.
- Динамически добавлять новый набор полей имени/электронной почты одним щелчком мыши, если пользователь хочет отправить более одного или двух наборов данных.
Поскольку я не знаю точно, сколько наборов каждый пользователь может отправить, я передаю данные в PHP в массиве (используя имя, за которым следует []), поэтому я могу использовать цикл foreach и всегда получают каждый набор данных. Вот код для лучшего понимания:
<form method="post" action="submit.php" id="formID">
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="contacts">
<tr>
<td><label class="namelabel"><span>Friend's First Name:</span><input type="text" name="friendName[]" class="friendName" id="name1" /></label></td>
<td><label class="emaillabel"><span>Friend's Email:</span><input type="text" name="friendEmail[]" class="friendEmail" id="email1" /></label></td>
</tr>
</table>
<p class="addmore"><a href="#" id="addclick">Click Here To Send This To More Friends</a></p>
<input type="submit" value="Spread The News!" name="submit" />
</form>
<script language="javascript" type="text/javascript" src="include/jquery-1.3.2.min.js"></script>
<script language="javascript" type="text/javascript" src="include/jquery.validate.pack.js"></script>
<script type="text/javascript">
$(document).ready(function() {
fieldCount = 1;
$("#addclick").click(function(e){
e.preventDefault();
fieldCount+=1;
$('#contacts tr:last').after('<tr><td><label class="namelabel"><span>Friend\'s First Name:</span><input type="text" name="friendName[]" class="friendName" id="name' + fieldCount + '" /></label></td><td><label class="emaillabel"><span>Friend\'s Email:</span><input type="text" name="friendEmail[]" class="friendEmail" id="email' + fieldCount + '" /></label></td></tr>');
});
$("#formID").validate({
rules: {
"friendName[]": "required",
"friendEmail[]": "required email",
}
});
});
</script>
Проблема заключается в том, однако, что только первый friendName [] и friendEmail [] получить подтверждено на представления. Вам нужно щелкнуть по любым другим полям с тем же именем, чтобы получить валидацию (как ленивая проверка только после того, как фокус)
Как я могу использовать одно и то же имя для поля формы и получить все из них, в то же время?
Я могу дать каждому элементу уникальное имя (на самом деле, я дал каждому элементу уникальный идентификатор с указанным кодом), но это сводит на нет полезность, используя нечто вроде friendName [] для имени и прохождения массив значений для PHP. Я хотел передать массив, чтобы сократить логику, необходимую на бэкэнд, поэтому мне не нужно учитывать каждое возможное количество наборов данных (или установить жесткий предел числа) - я могу просто цикл через $ _POST ['friendName'] с foreach. – 2009-06-25 04:14:46
Если у вас есть лучший способ обработки неопределенного количества имен и наборов данных электронной почты в PHP, каждый с уникальным именем, я все же уши! – 2009-06-25 04:20:32