Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Регулярное выражение (https://javascript.ru/forum/dom-window/68154-regulyarnoe-vyrazhenie.html)

shyxeroks 29.03.2017 05:14

Регулярное выражение + вставить изображения
 
Здравствуйте! Подскажите регулярку.
Из url: http://....../#page=reviews?id=2?&section=1?&status=5 и т.д.
Нужно получить id,section,status все после знака равно до вопросительного если имеется.
Было бы здорово функцию, для каждой переменой присваивать значение, к примеру:
var id = function('id');
var section= function('section');
var status= function('status');

И ещё такой вопрос. Есть редактируемый div, по клику вставляются в него смайлы, но почему то фокус всегда сбрасывается в самое начало.
function smile_add(src){	
$('.block').html($('block').html() + '<img class="smile" src="'+src+'"/>'); 
$('.block').focus();
}

Благодарю за помощь!

ksa 29.03.2017 08:38

Цитата:

Сообщение от shyxeroks
Было бы здорово функцию, для каждой переменой

Как вариант...
var url='http://....../#page=reviews?id=2?&section=1?&status=5 ';
alert(getPrm('id',url))
alert(getPrm('section',url))
alert(getPrm('status',url))
function getPrm(Name,Url){
	var reg=new RegExp(Name+'=[^?&]*');
	return Url.match(reg).toString().split('=')[1];
};

Но это если переменные не повторяются...

ksa 29.03.2017 08:39

Цитата:

Сообщение от shyxeroks
но почему то фокус всегда сбрасывается в самое начало

Именно так и работает
Цитата:

Сообщение от shyxeroks
$('.block').focus();


shyxeroks 29.03.2017 08:51

ksa, благодарю, переменные всегда разные. Погуглил понял, что с div contenteditable не все так просто со вставкой. К примеру:
Текст текст [тут каретка], если данным кодом вставляем смайл, то получается так: Текст текст [тут каретка] смайл. А хотелось бы, что бы каретка перемещалась и вставала после смайла.
<div contenteditable="true" onFocus="contenteditable_placeholder('text_edit');" onblur="contenteditable_placeholder('text_edit');" class="text_edit">Введите текст...</div>

function smile_add(src){	
$('.text_edit').html($('.text_edit').html() + '<img class="smile" src="'+src+'"/>'); 
$('.text_edit').focus();
}

ksa 29.03.2017 08:54

Цитата:

Сообщение от shyxeroks
с div contenteditable не все так просто со вставкой

Что есть - то есть. :yes:
Но у нас есть варианты... ;)
http://javascript.ru/forum/css-html/...tri-tegov.html

Alexandroppolus 29.03.2017 08:55

по вставкам и кареткам
https://learn.javascript.ru/range-textrange-selection

shyxeroks 29.03.2017 08:58

ksa, там речь о textarea вроде как, не?)

shyxeroks 29.03.2017 09:08

ksa,
var id = getPrm('id');
function getPrm(Name){
    var url = window.location.href;
    var reg = new RegExp(Name+'=[^?&]*');
    return url.match(reg).toString().split('=')[1];
}

Если в url нет get, то ошибка и загрузка останавливается, ругается на:
Cannot read property 'toString' of null. Если в урл нет переменных, возможно, что бы возвращало пусто значение?

Alexandroppolus 29.03.2017 09:19

function getPrm(Name, url){
    url = url || window.location.href;
    var m = RegExp(Name + '=([^?&#]*)').exec(url);
    return m ? m[1] : '';
}

shyxeroks 29.03.2017 09:28

Alexandroppolus, благодарю. С contenteditable не совсем понятно. Возможно ли смайл вставлять в то место, где находится каретка?


Часовой пояс GMT +3, время: 00:09.