Вход

Просмотр полной версии : Перевод строки в JS


SurPaul
05.04.2012, 20:12
Хочу вот так сделать:
alert("TEXT"+перевод строки+"TEXT");
вместо "перевод строки" что писать нужно? И как добавить ссылку в алерт? Заранее спасибо...

9xakep
05.04.2012, 20:38
alert('a\nb')

SurPaul
05.04.2012, 20:42
спасибо. а как ссылку в алерт добавить? скажите пожалуйста

9xakep
05.04.2012, 20:51
SurPaul,
всмысле ссылку? <a href=''>link</a> Это чтоли?

SurPaul
05.04.2012, 20:58
только прямо в самом алерте... html-теги я так понял в скриптах нельзя

9xakep
05.04.2012, 21:03
SurPaul,
да, нельзя

SurPaul
05.04.2012, 21:05
ну а как в алерте написать?))

T-sh
05.04.2012, 21:20
ну а как в алерте написать?))

никак там не написать.
для ссылок и прочего нужно создавать окна или боксы.

Gozar
05.04.2012, 21:21
ну а как в алерте написать?))
http://link.domen/

Если хочешь <a href=""></a>, то можно создать div оформленный как alert или покрасивее. Можешь использовать ExtJS для этого или jQuery UI . В общем никто не ограничивает в фантазии.

Gozar
05.04.2012, 21:22
никак там не написать.
Чё, http://link.domen/ не ссылка?

T-sh
05.04.2012, 21:26
Чё, http://link.domen/ не ссылка?

всмысле? :) тупо вписать адрес? :) ну да, можно.

SurPaul
05.04.2012, 21:31
точно??((( я делаю календарь jQuery с праздниками, сделал так что бы например после выбора 1 января открывалось окошко, где написано "Happy New Year!", хотел ещё чтобы менялся фон этой ячейки, но мне сказали что так нельзя, хочу сделать так чтобы было ещё написано "Поздравить!" (ссылка)

T-sh
05.04.2012, 21:33
скажу по секрету, можно сделать так, чтобы после выбора появлялось окошко ещё круче, чем у alert'a, где можно вписать всё, что угодно и менять не только фон, но и все остальные параметры и свойства )

9xakep
05.04.2012, 21:36
Чё, http://link.domen/ не ссылка?
Я думаю он имел ввиду, ссылку, что бы можно было перейти по ней

Gozar
05.04.2012, 22:04
9xakep,
Я как бы в курсе.

SurPaul
05.04.2012, 22:04
скажу по секрету, можно сделать так, чтобы после выбора появлялось окошко ещё круче, чем у alert'a, где можно вписать всё, что угодно и менять не только фон, но и все остальные параметры и свойства )
окошко от jQuery))) а фон я поменять хотел у ячейки)

SurPaul
05.04.2012, 23:13
скажу по секрету, можно сделать так, чтобы после выбора появлялось окошко ещё круче, чем у alert'a, где можно вписать всё, что угодно и менять не только фон, но и все остальные параметры и свойства )
а как сделать чтобы dialog открывался после выбора определённой даты? :D

T-sh
05.04.2012, 23:50
а как сделать чтобы dialog открывался после выбора определённой даты? :D

по клику на дате открыть окно?)

SurPaul
06.04.2012, 12:11
по клику на дате открыть окно?)
да, по клику на определённую дату)

T-sh
06.04.2012, 12:14
да, по клику на определённую дату)

я не спрашивал, по какому условию, я предложил вариант :)

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

taravasya
11.08.2016, 19:41
Подскажите пожалуйста как правильно реализовать:
Есть страница сайта, данные которой выводятся с помощью PHP из MySQL(ну вообщем vBulletin).
Для возможности очень быстрого редактирования, прикрутил java-скриптик, который при двойном клике по элементу, с помощью PHP(Ajax), запрашивает и выводит в элемент содержимое в том виде, в каком оно хранится в БД и после этого присваивает элементу атрибут contenteditable. Соответственно, после редактирования на onblur, отправляет содержимое элемента, как текст, обратно в соответствующее поле таблицы в БД.
Вот сам скрипт:

function quickEditTag(editableID) {
var $currentDlFile;
var $currentDlFile = $("#dlfile_" + editableID);
$currentDlFile.load("downloads_ajax.php?&ajaxedit=" + editableID);
document.getElementById("dlfile_" + editableID).contentEditable = true;
$currentDlFile.on('blur', function() {
$.post(
"/downloads_ajax.php?&ajaxedit=0",
{
dl2fileId: editableID,
dl2filemessage: $currentDlFile.text()
},
onAjaxSuccess
);
function onAjaxSuccess(data)
{
//alert(data);
}
document.getElementById("dlfile_" + editableID).contentEditable = false;
});
}

Код PHP не привожу, там в принципе всё стандартно(только непосредственно во время SET в MySQL проверяется и если надо конвертируется кодировка(а то заметил, что иногда возникают затыки с русскими символами)).
Всё работает зачемятельно, за исключением того, что после редактирования, при отправке назад в БД, игнорируются переносы строки. Не подскажите, как правильно "побороть" это?

laimas
11.08.2016, 19:59
иногда возникают затыки с русскими символами

Значит либо сервер и клиент работают в разных кодировках, либо некорректна или вообще не устанавливается кодировка соединения с базой.

игнорируются переносы строки.


В чем это выражается?

taravasya
11.08.2016, 20:12
Спасибо за ответ!
Значит либо сервер и клиент работают в разных кодировках
Да вроде не замечалось раньше такого... Я с булкой уже давно.. умею настраивать под неё всё... Затык возникает только при использовании моего скрипта. Но это не важно.. )))
В чем это выражается?
Как я писал ранее, после редактирования текста в contenteditable див-е, по событию onblur, имеющееся содержимое, отправляется в БД. Например, я написал вот такой текст:
Это мой текст. Это:
мой текст.
А в БД он сохраняется так:
Это мой текст. Это:мой текст.
При этом, очень важный момент, если в тексте УЖЕ были переносы, до ajax-редактирования, то они сохраняются.

warren buffet
11.08.2016, 20:16
Видишь, как простое на этапе выбора решение, оборачивается полной задницей на этапе реализации. С простыми решениями всегда такая засада. Теперь ты захотел кросс-браузерный конвертер переносов, потом с кодировками и хтмлем геморрой. И это все, вместо того, чтобы подставлять обычный textarea и по тем же каналам и с теми же скриптами все посылать и обрабатывать.

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

taravasya
11.08.2016, 20:21
warren buffet,
Ну... таки работает )) Эта возможность будет только у админов форума. То-есть это не рабочий вариант. Но есть контент, в довольно большом количестве, который нужно править. Я не придумал ничего лучше чем это.
А Вы имеете ввиду, что лучше, по двойному клику преобразовать div в textarea и при потере им фокуса снова возвращать в div?
кросс-браузерный конвертер переносов
да в принципе только хром интересует....

laimas
11.08.2016, 20:30
А в БД он сохраняется так:
Это мой текст. Это:мой текст.

Это вы смотрите в РМА или же на страницах сайта?:

taravasya
11.08.2016, 20:32
laimas,
И там и там выглядит так. На странице естественно только после обновления. А в БД именно без переноса и сохраняется.

warren buffet
11.08.2016, 20:41
Ну... таки работает

Если работает, ты зачем сюда пришел?

laimas
11.08.2016, 20:41
$currentDlFile.text() - а надо html получать. Но учтите, это будет BR.

PS. Зачем для простого текста использовать contenteditable, а не просто textarea?

taravasya
11.08.2016, 20:46
надо html получать
Тогда всё вообще не правильно сохранятеся, потому как тогда:
это будет BR
))))))
Зачем
Просто недопетрил вовремя... Я тот ещё программер ))
Зачем для простого текста использовать contenteditable, а не просто textarea?
ОК. Пошёл в нэт )), тем более, что "сосед сверху" о том же говорит...
Вот вариант:
http://jsfiddle.net/GeJkU/
я так понимаю это оно?
ЗЫ///Всем спасибо за подсказки!

laimas
11.08.2016, 20:50
Тогда всё вообще не правильно сохранятеся, потому как тогда:

Ну а чего вы хотели - при contenteditable перенос будет html элементом, а не \r\n. Так что выбирайте.

taravasya
11.08.2016, 23:14
Всем большущее спасибо! Получилось вот так:

function quickEditTag(editableID) {
var $currentDlFile = $("#dlfile_" + editableID);
$currentDlFile.load("downloads_ajax.php?&ajaxupdate=0&ajaxedit=" + editableID, function(){
var $currentDlFileHtml = $currentDlFile.html();
var $editableText = $("<textarea />");
$editableText.val($currentDlFileHtml);
$currentDlFile.replaceWith($editableText);
$editableText.focus();
$editableText.on('blur', function() {
$.post(
"/downloads_ajax.php?&ajaxedit=0&ajaxupdate=0",
{
dl2fileId: editableID,
dl2filemessage: $editableText.val()
},
onAjaxSuccess
);
function onAjaxSuccess()
{
$currentDlFile.load("downloads_ajax.php?&ajaxedit=0&ajaxupdate=" + editableID, function(){
$editableText.replaceWith($currentDlFile);
});
}
});
});
}

warren buffet
12.08.2016, 01:05
Да подсунуть textarea в 100 раз проще, чем мудохаться с хтмлем не хтмлем в дивах каких-то. Если ты бы искал на английском, то мгновенно бы нашел пару тредов на SO, а я за тебя искать не хочу, ибо идея идиотская изначально.

ЗЫ еще понахерачил несусветных прототипов в хтмл элемент. Кольхоз.

taravasya
12.08.2016, 15:33
Здесь похоже свинство в норме??? :blink:
Это я к тому же, что например laimas, сказал мне тоже самое, но только нормально обратив внимание на мои ошибки, а с позволения сказать - "Вы" только подхамливаете, в основном, ничего не говоря по делу....
То что я менее опытен в данном вопросе, совсем не означает "кольхоз", а вот подобный подход к диалогу, говорит о гораааааздо более худших качествах ;)

warren buffet
12.08.2016, 16:09
До использования contenteditable может дойти только очень опытный и очень упертый кодер. Лодырь и гулена пойдет и скачает какой-нить плагин для булки и начнет модерить как из пушки.

Тебе просто жалко выпиливать весь этот бред, заменять на нормальные, человеческие коды, отчего и баттхерт. Ну конвертируй br с div'ами в переносы и обратно. Каждый браузер обслуживает этот атрибут по-своему.