Инпуты с типом поля email не сериализуются

378
16 июня 2017, 11:23

На форме попробывать валидацию 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>

Answer 1
<режим телепатии>

У Вас на странице есть другая форма/элемент (формы/элементы) с id="js-order-navigator", которая идет раньше показанной в вопросе, и в которой нет инпута с name="email". Селектор $('#js-order-navigator') находит именно эту форму, а не ту, про которую Вы думаете.

Вы можете заменить селектор на $(this).closest("form").serialize(), хотя если у Вас и элементов с id="js-button-send-order" больше одного - работать все равно не будет.

Не дублируйте значения атрибутов id - они предназначены для уникальной (в смысле единственности) идентификации DOM-элементов на странице. Используйте классы, помня в то же время о том, что селектор по классу будут возвращать jQuery-обертку вокруг нескольких DOM-элементов.

</режим телепатии>
READ ALSO
Как изменить положение значения?

Как изменить положение значения?

Добрый деньПомогите, пожалуйста, изменить положение значения индикатора вот для этого

404
Что выполняет этот код?

Что выполняет этот код?

Уважаемые программисты, мой Хром, систематически, на любой странице, при клике на любую область, запускает скрипт, который открывает новую...

418
Проверка селектора на свойство CSS

Проверка селектора на свойство CSS

В файле stylecss прописано:

306
Проскролить в самый низ в чате

Проскролить в самый низ в чате

Здравствуйте такая проблема есть блок с сообщениями высотой 400px в него добавлено css свойство overflow-y: scroll; и блок прокручивается вниз только...

381