Не отсылает данные если используем textarea
Added by Alex Godinev almost 2 years ago
Столкнулся с тем, что если создаем редактор для textarea, то данные не отсылаются на сервер при отправке формы. Заменил на div - все отправилось. Может, конечно, у меня какие глюки, но вот так. Цитата из дока:
#our-element - id элемента, на котором будет создан редактор, может быть textarea или любым HTML элементом, содержащем текст (будет заменен на textarea перед отправкой формы)
Replies (13)
RE: Не отсылает данные если используем textarea
-
Added by Troex Nevelin almost 2 years ago
Проблема оказалось в том что для textarea необходим параметр name иначе получается у элемента нет имени в POST запросе #189.
Уже исправлено.
RE: Не отсылает данные если используем textarea
-
Added by Art Z over 1 year ago
Я не особо понимаю в JS, так что прошу помощи )
Есть форма редактирования (создания) новостей.
<form name="edit_news" ....>
Есть textarea на которой прикручен elrte
<textarea id="editor" type="text" name="description" class="large">(данные из базы)</textarea>
Есть кнопка submit при нажатии на которую нужно отправить данные в базу
<input type="submit" name="edit_news" value="Update News" class="button"> </form>
Так вот вопрос. Как мне заставить elrte передать данные в textarea (name="description")?
Я полистал форум, попробовал $('selector').elrte('updateSource');
Но что-то у меня не получается ничего.
Если не сложно объясните на моем примере куда вставлять $('selector').elrte('updateSource');, что должно быть на месте 'selector', как обойтись без кнопки "save"?
Заранее спасибо!
RE: Не отсылает данные если используем textarea
-
Added by Troex Nevelin over 1 year ago
Если у вас нет скриптов которые перехватывают событие submit вашей формы то данные должны отправляться на сервер в переменной POST description, если же у вас есть скрипт, который срабатывает на submit тогда в этот скрипт вам нужно добавить $('#editor').elrte('updateSource'); (конретно для вашего случая)
RE: Не отсылает данные если используем textarea
-
Added by Art Z over 1 year ago
Troex Nevelin wrote:
Если у вас нет скриптов которые перехватывают событие submit вашей формы то данные должны отправляться на сервер в переменной POST description, если же у вас есть скрипт, который срабатывает на submit тогда в этот скрипт вам нужно добавить
$('#editor').elrte('updateSource');(конретно для вашего случая)
Спасибо Вам за скорейший ответ!
Нет, у меня после нажатия submit все данные уходят в php файл, после чего идут в базу. Но именно поле description остается неизменным, как до редактирования. А js скриптов на submit у меня нет. И вот поэтому я и не пойму куда нужно добавить "$('#editor').elrte('updateSource');"? в событие onclick? или после создания редактора
// create editor
$('#editor').elrte(opts);
$('#editor').elrte('updateSource');
// or this way
//var editor = new elRTE(document.getElementById('editor'), opts);
Т.е. как мне заставить редактор отдать полученный текст в поле textarea name="description" и не пользуясь при этом кнопкой "save"?
Пол дня мозг ломаю, и никак до меня не доходит =))) Извините что отвлекаю по мелочам, но очень нужен хелп ))
RE: Не отсылает данные если используем textarea
-
Added by Troex Nevelin over 1 year ago
попробуйте добавить код после инициализации elrte:
$('form[name="edit_news"]').submit(function() {
$('#editor').elrte('updateSource');
});
RE: Не отсылает данные если используем textarea
-
Added by Art Z over 1 year ago
Не работает. После того как нажимаю submit, в поле остается тот же текст что и до редактирования (((
Я точно делаю что-то не так. Сейчас по порядку выложу как я все делаю:
Между тегами <head>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
elRTE.prototype.options.panels.web2pyPanel = [
'bold', 'italic', 'underline', 'forecolor', 'justifyleft', 'justifyright',
'justifycenter', 'justifyfull', 'formatblock', 'insertorderedlist', 'insertunorderedlist',
'link', 'image', 'flash' ];
elRTE.prototype.options.toolbars.web2pyToolbar = ['web2pyPanel', 'tables'];
var opts = {
toolbar : 'web2pyToolbar',
cssClass : 'el-rte',
lang : 'en', // set your language
height : 200,
cssfiles : ['http://www.xxx.com/js/elrte/css/elrte-inner.css'],
fmOpen : function(callback) {
$('<div id="myelfinder" />').elfinder({
url : 'http://www.xxx.com/js/elfinder/connectors/php/connector.php',
lang : 'en',
dialog : { width : 900, modal : true, title : 'elFinder - file manager for web' },
closeOnEditorCallback : true,
editorCallback : callback
})
}
};
// create editor
$('#editor').elrte(opts);
$('form[name="edit_news"]').submit(function() {
$('#editor').elrte('updateSource');
});
// or this way
//var editor = new elRTE(document.getElementById('editor'), opts);
});
</script>
</head>
Далее в теле идет форма:
<form name="edit_news" method="POST" enctype="multipart/form-data" action="news.php?m=edit&NID={$news[0].NID}">
<fieldset>
....
<label for="description">Description: </label>
<textarea id="editor" type="text" name="description" class="large">{$news[0].description}</textarea><br>
....
<div style="text-align: center;">
<input type="submit" name="edit_news" value="Update News" class="button">
<input type="button" name="cancel" value="Cancel" class="button" onClick="window.location='news.php'">
</div>
</form>
Вроде все как надо. Но не работает (((
RE: Не отсылает данные если используем textarea
-
Added by Troex Nevelin over 1 year ago
Сделайте в news.php var_dump($_POST); чтобы точно посмотреть какие данные отсылаются, так же убедитесь что у вас последня версия elRTE 1.2.
Так же рекомендую <textarea id="editor"... заменить id на description, так же $('#editor').elrte(opts); на $('#description').elrte(opts);
Так же смотрите что вам пишет FireBug в консоль, может у вас какие конфликты имеются.
RE: Не отсылает данные если используем textarea
-
Added by Art Z over 1 year ago
Спасибо Troex Nevelin!
Действительно были конфликты. А точнее неправильно назвал переменные, которые сходились с функциями mysql. Так что пойду выпрямлять руки ))
Еще раз большое спасибо )) Будем юзать Ваш редактор ))
RE: Не отсылает данные если используем textarea
-
Added by Yermashov Wasiliy about 1 year ago
А как сделать так, чтобы событие $('#editor').elrte('updateSource'); происходило для всех загруженных редакторах на странице?
При этом их количество может варьироваться, и имена #editor зараннее не известны ?
RE: Не отсылает данные если используем textarea
-
Added by Dmitry Levashov about 1 year ago
Искать их вручную
$('*').each(function() {
this.elrte !== void(0) && $(this).elrte('updateSource')
})
Если все редакторы создаются на текстареа или дивах - можно оптимизировать селектор $('textarea,div')
RE: Не отсылает данные если используем textarea
-
Added by Yermashov Wasiliy about 1 year ago
т.е. можно попробовать сделать так:
$('textarea').each(function(){this.elrte !== void(0) && $(this).elrte('updateSource')})
???
RE: Не отсылает данные если используем textarea
-
Added by Yermashov Wasiliy about 1 year ago
Сначала все работало отлично на вот таком коде
function submit_form(form)
{
$('form[name="'+form+'"]').find('.editor').elrte('updateSource');
$('form[name="'+form+'"]').submit();
}
А через время стал давать ошибку:
[15:06:13.579] uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLDocument.execCommand]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://***.com/elrte/js/elrte.min.js :: <TOP_LEVEL> :: line 34" data: no]
файлы все на местах, и не менялись
(1-13/13)