На форме попробывать валидацию html5 и столкнулся с проблемой, есть поле email которое в javascript почемуто не сериализуется
<input name="email" type="email" required>
если записать как
<input name="email" type="text">
то сериализация формы работает: $('#myform').serialize()
Как сериализовать input c type="email" ?
Update from comment:
$("#js-button-send-order").click(function (e) {
$.ajax({
url: "navigator_order_action.php",
data: $('#js-order-navigator').serialize(),
type: 'post',
success: function(response) { }
});
return false;
});
форма
<form action="#" method="post" name="frmBook" id="js-order-navigator">
<table border="0">
<tr>
<td align="right" valign="top"><span style="color: #ff0000">*</span><b>Имя</b></td>
<td valign="top" align="left"><input name="name" type="text"></td>
</tr>
<tr>
<td align="right" valign="top"><span style="color: #ff0000">*</span><b>E-mail</b></td>
<td valign="top" align="left"><input name="email" type="email"></td>
</tr>
<tr>
<td align="right" valign="top"><b></b></td>
<td valign="top" align="left"><input id="js-button-send-order" name="btnSubmit"
value="Отправить" type="submit"></td>
</tr>
<tr>
<td></td>
<td align="left" valign="top"></td>
</tr>
</table>
Update with code snippet
$("#js-button-send-order").click(function(e) {
var fData = $('#js-order-navigator').serialize();
console.log(fData);
console.log($('#js-order-navigator').find("[name='email']").length);
$.ajax({
url: "navigator_order_action.php",
data: fData,
type: 'post',
success: function(response) {}
});
return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="#" method="post" name="frmBook" id="js-order-navigator">
<table border="0">
<tr>
<td align="right" valign="top"><span style="color: #ff0000">*</span><b>Имя</b></td>
<td valign="top" align="left"><input name="name" type="text"></td>
</tr>
<tr>
<td align="right" valign="top"><span style="color: #ff0000">*</span><b>E-mail</b></td>
<td valign="top" align="left"><input name="email" type="email"></td>
</tr>
<tr>
<td align="right" valign="top"><b></b></td>
<td valign="top" align="left"><input id="js-button-send-order" name="btnSubmit" value="Отправить" type="submit"></td>
</tr>
<tr>
<td></td>
<td align="left" valign="top"></td>
</tr>
</table>
</form>
<режим телепатии>
У Вас на странице есть другая форма/элемент (формы/элементы) с id="js-order-navigator", которая идет раньше показанной в вопросе, и в которой нет инпута с name="email". Селектор $('#js-order-navigator') находит именно эту форму, а не ту, про которую Вы думаете.
Вы можете заменить селектор на $(this).closest("form").serialize(), хотя если у Вас и элементов с id="js-button-send-order" больше одного - работать все равно не будет.
Не дублируйте значения атрибутов id - они предназначены для уникальной (в смысле единственности) идентификации DOM-элементов на странице. Используйте классы, помня в то же время о том, что селектор по классу будут возвращать jQuery-обертку вокруг нескольких DOM-элементов.
</режим телепатии>
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости