it-swarm.com.ru

jQuery serialize () оставляет текстовое поле

Когда я отправляю форму с использованием метода serialize () jQuery, все отправляется, кроме текстовой области в форме. Это общая проблема? Я не могу понять это. Форма работает за исключением только текстовой области, которая остается неопределенной ???

<textarea form="new_note_form" id="note_text" name="note_text" required="required"></textarea>     
19
Amoeba

Это не работает пока вы не добавите атрибут name к текстовой области.

<textarea id="sLifeStyle3Content" name="sLifeStyle3Content" placeholder="HTML is allowed"> <apex:outputText value="{!sLifeStyle3Content}" /> </textarea>

21
Daniel Sokolowski

Нет, это не так. 

Работает нормально. http://jsfiddle.net/nuBkM/

<form>
    <input name="foo" value="bar"/><br>
    <textarea name="something">lorem ipsum</textarea>
</form>

JavaScript

console.log($("form").serialize());
// => foo=bar&something=lorem+ipsum 

.serializeArray тоже работает

console.log($("form").serializeArray());
// => [{name: "foo", value: "bar"}, {name: "something", value: "lorem ipsum"}] 
5
user633183

Другой способ обойти это - превратить значение textarea в переменную и передать его с помощью вызова ajax ...

var comment = $ ('. note_comment'). val ();

           $.ajax({
               type: "POST",
               url: '/approot/rewrite.cfm/app.people/insertNote?format=json&Comment=' + comment,
               data: $("form[name='add_note_form']").serializeArray(),
               success: function(data)
               {
              alert('success');         
               }
             });
1
dtharpe

Хорошо работает в скрипке . http://jsfiddle.net/Ultimate/2Ey2A/ Тестирование с 

$('button').click(function(){
    alert($('form').serialize());
});
0
PaulBGD

Это то, что я использую, чтобы включить/исключить каждый элемент, так как он мне нужен из формы. Этот метод также делает наши старые формы сериализуемыми, хотя некоторые элементы имеют только идентификаторы, а не имена. 

$( 'textarea' ).each( function() { 
  $(this).attr( 'type', 'textarea' ); 
});

$( 'input:text:not( ".excluded" ), input:checkbox, input:radio, textarea' ).each( function() {

  if (!$(this).hasClass( 'answer' )) { 
    $(this).addClass( 'answer' ); 
  }

  if ( !$(this).attr( "name" ) && $(this).attr( 'id' ) ) { 
    $(this).attr( "name", $(this).attr("id") ); 
  }

});

Затем я вызываю функцию ниже, чтобы получить мой сериализованный массив для события $( '.answer' ).change(), навигации по страницам и события $('form').submit(). Этот метод не оказывает заметного влияния на производительность страницы, которую я могу различить.

function storeFormData() {
  var serializedData = $( ".answer" ).serializeArray();
  var formDataObj = serializedData;
  var formDataString = JSON.stringify(formDataObj);
  localStorage.setItem(fso_id, formDataString);
  return formDataString;
}
0
MistyDawn

У меня такой же опыт. Отправка формы с использованием $ ("# form_id"). Serialize () не включает поля textarea. Это поведение является последовательным в течение последних 2 лет в единственной форме, которая содержит элементы textarea. Время от времени я пересматриваю форму и код, чтобы сделать вывод, что он должен работать, но не работает.

Неудивительно, что мой обходной путь - сначала переместить содержимое текстовых полей в скрытые текстовые поля, а затем сериализовать данные формы.

0
user3261392

Это исключает текстовую область , если вы не удаляете 'form = "new_note_form"' из вашего элемента текстовой области. 

Я знаю, что это против хорошей практики, но, если вы хотите использовать функцию сериализации jQuery, вы должны удалить этот атрибут из элемента textarea.

0
Ismael Sarmento

Если текстовая область контролируется редактором типа tinyMCE, вам может потребоваться вызвать tinyMCE.triggerSave(), как описано в этот ответ .

0
grvsmth