Я собираю информацию в стандартной HTML-форме. Я имею, например, <input type="text" name="UserName" id="name"/>
. Когда форма отправлена, я хочу добавить разрыв строки к вводимому значению. Таким образом, если бы пользователь ввел "нечто", то форма отправила бы значение "foo\n".
Вот функция jQuery, которую я использую:
$("#formID").submit(function () {
$(":text").each(function () {
var value = $(this).val();
var newValue = value + " \n";
$(this).val(newValue);
});
});
Когда форма отправлена, однако, значение, присвоенное полю формы, не имеет разрыва строки.
Моя цель состоит в том, чтобы разрыв строки пережил вывод обработки формы бэкенда, которая генерирует электронное письмо. Так как я не управляю сценарием, который генерирует почту, я пытаюсь наложить некоторое форматирование с тем, чем я могу управлять.
Любая помощь ценится.
Я разместил свой предыдущий ответ до того, как увидел ваш комментарий о том, что выводится обычный текст. Теперь попробуйте следующее:
$(document).ready(function() {
$("#formID").submit(function () {
$(":text").each(function () {
var value = $(this).val();
var myname = $(this).attr('name');
var newValue = value + " \n";
var hid = '<input type="hidden" name="' + myname + '" value="' + newValue + '"/>';
$(this).removeAttr('name');
$("#formID").append(hid);
});
});
});
Как говорит Марк, символ разрыва строки не выводится в виде разрыва строки при просмотре в браузере (или в почтовом клиенте), поэтому вместо добавления символа разрыва строки "\n" следует добавить
$("#formID").submit(function () {
$(":text").each(function () {
var value = $(this).val();
var newValue = value + '<br/>';
$(this).val(newValue);
});
})
Текстовое поле не содержит «\ N» только Textarea. То, что вы можете сделать, это опубликовать данные сами к контроллеру или хранить значения в скрытых полях и отправьте форму и прочитайте скрытые поля на сервере, если у вас нет большого контроля, там сопоставляем имена в скрытые поля.