Нужна помощь! Есть поля карточки клиента. Нажимаешь на нужную информацию вместо нее подставляется input и можно редактировать. Все работало пока не начал подключать DaData.ru и получается вот такая (см. картинку) беда.
Код:
$(document).ready(function(){
var rapture = function (which) {
$(which).contents().filter(function() {
return this.nodeType === 3;
})
.wrap('')
.end()
.filter('br') // убираем элементы переноса строки <br>
.remove()
.end()
.end()
.children().filter(function() {
$(this).html($.trim($(this).html().replace(/(\t|\n)/g,"")));
return !$(this).text().length
}).remove();
}
$('.editable, .editable-area')
.hover(function() {
$(this).toggleClass('over-inline'); // добавляем эффект для обозначения области редактирования
})
.click(function(event) { // событие click, возникающее при клике на редактируемом содержимом
var $editable = $(this); // получаем ссылку на редактируемый элемент, и сохраняем ее в переменную
if($editable.hasClass('active-inline')) { // проверяем имеет ли элемент класс active-inline
return;
}
var contents = $.trim($editable.html().replace(/\/p>/g,"/p>\n\n")); // удаляем лишние пробелы в начале и конце строки
$editable
.addClass('active-inline') // добавляем элементу класс active-inline - редактирование не закончено и позволяет стилизовать вводимый текст
.empty(); // очищаем текущий элемент, всех его потомков.
// опребеляем какой элемент формы мы должы подставить заместо редактируемого элемента
if ($editable.hasClass('editable')) {var editElement = '<input type="text" id="'+$editable.attr('data-id-input')+'"/>';}
// заменяем таргет элементом формы
$(editElement)
.val(contents)
.appendTo($editable)
.focus()
.blur(function(event) {
$editable.trigger('blur');
});
if ($editable.attr('data-id-input') == 'name_contact') {suggestion("NAME");}
if ($editable.attr('data-id-input') == 'email_contact') {suggestion("EMAIL");}
if ($editable.attr('data-id-input') == 'address_contact') {suggestion("ADDRESS");}
// function DADATE.RU
function suggestion(suggestions_type){
$("#"+$editable.attr('data-id-input')+"").suggestions({
token: "ae1b7ce1d85f5b9cb54fca0af82f18e97cfcc40a",
type: ""+suggestions_type+"",
count: 5,
/* Вызывается, когда пользователь выбирает одну из подсказок */
//onSelect: function(suggestion) {
// console.log(suggestion);
//}
});
}
// function DADATE.RU
})
.blur(function(event) { // событие blur, возвещающее о завершении редактирования.
var $editable = $(this);
var edited = $editable.find(':first-child').val();
if (edited !== '') {
$editable.children().replaceWith('<em class="ajax">сохранение ... </em>').delay(2000).fadeOut('fast'); // ставим "сохранить..." вместо поля редактирования
// сохраняем посредством post
var LeadsParam = {
id: $editable.attr('id'),
id_order: <? echo $_GET['edit'] ?>,
id_staff: <? echo $userdata['id_staff'] ?>,
id_cabinet: <? echo $id_cabinet ?>,
value: edited
};
jQuery.ajax({
type: "post",
url: "/update_order.php?vid=leads",
data: LeadsParam,
dataType: 'json',
success: function(data) {
if ($editable.hasClass('editable')) {
$editable
.removeClass('active-inline')
.children()
.replaceWith(data.answer);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости