var result = /^\s*(?:\+7\s*)?\(*\s*\d{3}\s*\)*\s*(?:\d\s*-*\s*){7}$/.test(input);
/^\+7\s\d{3}\s\d{7}$|^\d{3}\s\d{7}$/
+7 9116665544
$(document).on();
+7 (926) 678 - 1234
var result = /^\s*(?:\+7\s*)?\(*\s*\d{3}\s*\)\s*(?:\d\s*-*\s*){7}$/.test(input);
function getobjectsbyid(id) {
var $object = $('#objectid_' + id),
districts = [
'Джомтьен',
'Пратамнак',
'Центр',
'Север',
'Юг',
'Тайские районы'
],
types = [
'Студия',
'Квартира',
'Дом',
'Вилла'
],
icons = [
'../img/icon_studio.png',
'../img/icon_flat.png',
'../img/icon_home.png',
'../img/icon_villa.png'
];
if ($object.hasClass('object')) {
$object.removeClass('hide').addClass('show');
markers[id].setMap(map2);
} else {
$.ajax({
type: 'POST',
url: '../lib/db.php',
dataType: 'json',
cach: false,
data: {
edit: true,
id: id
},
success: function(dataobjects) {
var infobox = new InfoBox({
content: dataobjects.place_name + ' ' + dataobjects.img_gen,
disableAutoPan: false,
maxWidth: 160,
pixelOffset: new google.maps.Size(-80, -220),
zIndex: null,
boxStyle: {
background: 'url(google-maps-utility-library-v3.googlecode.com/svn/...) no-repeat',
opacity: 1,
width: '160px'
},
closeBoxMargin: '6px 6px 2px 2px',
closeBoxURL: 'www.google.com/intl/en_us/mapfiles/close.gif',
infoBoxClearance: new google.maps.Size(1, 1)
});
markers[id] = new google.maps.Marker({
icon: icons[dataobjects.place_type_id - 1],
position: new google.maps.LatLng(
parseFloat(dataobjects.coord_lat),
parseFloat(dataobjects.coord_lat)
),
map: map2,
title: dataobjects.place_name
});
$('#objects').append(
dataobjects.place_name + ' ' + districts[dataobjects.place_district_id - 1] + '<br>' +
'Тип: ' + types[dataobjects.place_type_id - 1] + '<br>' +
'Спален: ' + dataobjects.bedroom_count + '<br>' +
'Ванных: ' + dataobjects.bathroom_count + '<br>' +
dataobjects.price + ' бат/мес<br>уточняйте стоимость'
);
google.maps.event.addListener(markers[id], 'click', function() {
infobox.open(map2, markers[id]);
});
google.maps.event.addListener(map2, 'click', function() {
infobox.close();
});
}
})
}
}
Последние подводные камни устранены. Все элементы перебираются, происходит полное копирование.
Как обычно, свинью подложил webkit (его работа часто неприятно поражает) — на этот раз в работе с текстовыми нодами.
В ходе работы был найден единственный алгоритм
— ищем слова на 2-х и более строках
— разбиваем его на слога по мягким переносам
— проверяем каждую пару
— между каждой парой, находящейся на разных строках, вставляем элемент-заменитель и родной перенос, но также внутри элемента
Так вот, мне удобней всего было в цикле создавать текстовые ноды. Так вот для webkit 3 текстовых ноды: текст-перенос-текст вовсе не эквивалентно одной текстовой ноде с аналогичным содержанием.
Мучения закончены:) Специально внутри функции всё написал на чистом JS. Она принимает исходный блок и цель. Если цели нет — заменяет блок полностью. Так что если вдруг были динамически навешены обработчики — селяви:)