Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Открыть новую тему     Написать ответ в эту тему

jason32



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
и нет проблем..

У вас работает? То есть ищем что-то в поиске, снимаем фокус нажатием на страницу и нажимаем например "1"( у меня переход на соседний таб). Ниче вводиться в поле ввода не должно.  
 

Цитата:
может взаимодействует еще с каким то аддоном.  

Сломалось во всех браузерах сразу - Хром, фокс, прочие хромиумы. Поэтому вряд ли дело в аддонах. В консоле пусто

Всего записей: 715 | Зарегистр. 08-11-2004 | Отправлено: 17:05 29-03-2023 | Исправлено: jason32, 17:08 29-03-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jason32
от балды

Цитата:
// ==UserScript==
// @name        Unfocus yandex search
// @match       https://yandex.ru/*
// @run-at      document-end
// @grant       none
// ==/UserScript==
 
setTimeout(function(){
    var a = document.activeElement;
    a.tagName == "INPUT" && a.blur();
    window.onkeydown = function (a) {
        var b = a.target, c;
        if (b.tagName != "INPUT") {
            c = document.activeElement;
            c.tagName == "INPUT" && c.blur()
        }
    };
}, 1e3);

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 17:17 29-03-2023
jason32



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Божественно. Заработало. Фантастика. Большое спасибо

Всего записей: 715 | Зарегистр. 08-11-2004 | Отправлено: 20:01 29-03-2023 | Исправлено: jason32, 20:01 29-03-2023
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как правильно сделать ссылку из функции — на функцию, в которой прописан список замен?
 

Код:
 
        calculateCellValue: function(rowData){
           if(rowData.d){
             var text = rowData.d.replace(/#/g,"");
             text = text.replace(/11111/g, "222222");
 
 
             function my_func(text);
 
 
             return text;
           }
        },
 
 
function my_func(text) {
             text.value = text.value.replace(/333333/g, "4444444");
             text.value = text.value.replace(/555555/g, "6666666");
}

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 23:01 29-03-2023
jason32



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
 Вам надо в функции возвращать значение и там лучше бы чтобы не было путаницы использовать другое имя.  

Код:
 
function my_func(a) {
            a.value = a.value.replace(/333333/g, "4444444");
            a.value = a.value.replace(/555555/g, "6666666");
return a;
}
  calculateCellValue: function(rowData){
           if(rowData.d){
             var text = rowData.d.replace(/#/g,"");
             text = text.replace(/11111/g, "222222");
           
 
            var b= my_func(text);
 
 
             return b;
           }
        }
 

Код не факт, что рабочий, так как сам JS я так себе знаю и плохо помню, но функции вот так работают в языках программирования

Всего записей: 715 | Зарегистр. 08-11-2004 | Отправлено: 23:24 29-03-2023 | Исправлено: jason32, 23:26 29-03-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Код:
      calculateCellValue: function(rowData){
           if(rowData.d){
             var text = rowData.d.replace(/#/g,"");
             text = text.replace(/11111/g, "222222");  
             return my_func(text);
           }
        },
 
 
function my_func(text) {
             text = text.replace(/333333/g, "4444444");
             return text.replace(/555555/g, "6666666");
}

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 23:34 29-03-2023
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как правильно прописать замену, чтобы она применялась к первому слову "прил.", с пропуском остальных? То есть, только для отдельных слов:
 

Код:
прил. lприл. пприл. 1прил.

 

Код:
text = text.replace(/(?=\s|[^\u0400-\u04FF\w]|\b|$)(прил\.)/g, "<b>$1</b>");

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 00:09 31-03-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
чтобы она применялась к первому слову "прил.",  

убрать g после /

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 00:15 31-03-2023
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 

Цитата:
убрать g после /

В этом случае замена применяется к "lприл."

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 00:27 31-03-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
В этом случае замена применяется к "lприл."

потому что стоит [^\u0400-\u04FF\w], зачем?
\b(прил\.)

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 00:34 31-03-2023
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо! Так сработало:

Код:
(?=\s|[^\w]|\b|$)(прил\.)

А что означает "g"?

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 00:41 31-03-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
(?=\s|[^\w]|\b|$)

зачем?
\b уже подразумевает \s
 

Цитата:
А что означает "g"?

global - все совпадения.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 00:44 31-03-2023
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
зачем?

Не имею понятия. Видимо в этом виджете так это срабатывает — типа граница слова для кириллицы.
 
Добавлено:
Mavrikii
Тут об этом https://ikfi.ru/article/granica-slova-b-i-kirillica-v-javascript

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 00:46 31-03-2023
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли внутри функции зациклить какую либо замену на заданное количество раз, типа так:
 

Код:
function my_func(text) {
 
   loop, 20 {
      text = text.replace(/1111111111/,"22222222");
   }
 
}


Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 01:55 02-04-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
пример

Код:
var n = 0, N = 5, text = '1112131415';
alert(text.replace(/1/g, match => n++ < N ? '_': match));

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 03:54 02-04-2023
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, опять с вопросом.
Mavrikii,
посмотрите плиз, например, вот на этой странице, слева фильтр, справа чуть ниже аккордеон с табами.  
Фильтр работает корректно, но если выбрать любой - хотя бы первый - критерий фильтра, то некорректно работает аккордеон- скрыты нечетные табы и по кликам он их открывает или опять скрывает.
Если же полностью, не в аяксе, перезагрузить страницу, то все ок, с теми же самыми фильтрами.  
Первый раз сталкиваюсь с таким, в чем может быть проблема и как решить?

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 14:36 06-04-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
нет времени пока глубоко ковыряться. возможно связано с обработкой новых элементов, что подгружаются, когда применяется обработчик работы accordion не к всему элементу, когда вставлены уже все табы, а после каждого. это нужно аккуратно ставить брейкпоинты и изучать.
 
ps: страница скачивается через ajax нормально, отображаются все табы, далее начинается инцициализация accordion и каким то образом табы через один связываются по id с табом выше, чтобы показывались по клику.
 
в общем, у меня ощущение, что это происходит из-за того, что одновременно используется jQuery UI Accordion и Bootstrap версия - между ними возникает конфликт. могу и ошибаться.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 20:47 06-04-2023 | Исправлено: Mavrikii, 23:44 06-04-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Взял из сети "Отправка формы без перезагрузки страницы на PHP и Ajax". Как ни удивительно, работает.
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
 
<form id="feedback-form" action="">
    <input type="text" name="name" required placeholder="Ваше имя">
    <input type="tel" name="phone" required placeholder="Ваш телефон">
    <textarea name="text" placeholder="Ваш текст"></textarea>
    <input type="submit" name="submit" value="Отправить">
</form>
 
 
<script>
$(document).ready(function () {
    $("form").submit(function () {
        // Получение ID формы
        var formID = $(this).attr('id');
        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
        $.ajax({
            type: "POST",
            url: '/send.php',
            data: formNm.serialize(),
            beforeSend: function () {
                // Вывод текста в процессе отправки
                $(formNm).html('<p style="text-align:center">Отправка...</p>');
            },
            success: function (data) {
                // Вывод текста результата отправки
                $(formNm).html('<p style="text-align:center">'+data+'</p>');
            },
            error: function (jqXHR, text, error) {
                // Вывод текста ошибки отправки
                $(formNm).html(error);
            }
        });
        return false;
    });
});
</script>
 
Обработчик send.php:
    $message = 'Имя: ' . $_POST['name'] . ' ';
    $message .= 'Телефон: ' . $_POST['phone'] . ' ';
    $message .= 'Текст: ' . $_POST['text'] . ' ';
 
    file_put_contents('1-newText.txt', $message);
 
 
    echo "Сообщение отправлено!";
 
 
Но после отправки форма исчезает.
Можно ли сделать так, чтобы форма оставалась, и можно было с ее помощью отправить другие данные многократно?  
При этом чтобы набранные символы оставались в окнах.
 
 
 
 
 
 

Всего записей: 351 | Зарегистр. 07-09-2016 | Отправлено: 13:15 10-04-2023 | Исправлено: Vladsvn, 16:17 10-04-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
могли бы чуток подумать.
 

Цитата:
$(formNm).html

переписывает содержимое тега <form>, просто не делайте этого.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 21:38 10-04-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мудрено догадаться!
Спасибо!
 
А как сделать, чтобы вводить инфу с двух форм, и чтобы сообщения выводить рядом с каждой из них?
Вот такая попытка - не работает почему-то.
 
<form id="feed" action="">
    <input type="text" name="name" required placeholder="Ваше имя">
    <input type="tel" name="phone" required placeholder="Ваш телефон">
    <input type="hidden" name="id-form" value="first">
    <textarea name="text" placeholder="Ваш текст"></textarea>
    <input type="submit" name="submit" value="Отправить">
</form>
 
<div id="feeds"></div>
 
<form id="deed" action="">
    <input type="text" name="name" required placeholder="Ваше имя">
    <input type="tel" name="phone" required placeholder="Ваш телефон">
    <input type="hidden" name="id-form" value="dva">
    <textarea name="text" placeholder="Ваш текст"></textarea>
    <input type="submit" name="submit" value="Отправить">
</form>
 
<div id="deeds"></div>
 
<script>
$(document).ready(function () {
    $("form").submit(function () {
        // Получение ID формы
        var formID = $(this).attr('id');
        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
        var formNms = formNm + 's';
        $.ajax({
            type: "POST",
            url: '/send.php',
            data: formNm.serialize(),
            beforeSend: function () {
                // Вывод текста в процессе отправки
                $(formNms).html('<p style="text-align:center">Отправка...</p>');
            },
            success: function (data) {
                // Вывод текста результата отправки
                $(formNms).html('<p style="text-align:center">'+data+'</p>');
            },
            error: function (jqXHR, text, error) {
                // Вывод текста ошибки отправки
                $(formNms).html(error);
            }
        });
        return false;
    });
});
</script>
 
Я здесь в div id, взятый из имени формы, подставляю сзади букву s, чтобы не переписывалось <form>. Но ни сообщения не выводит, ни инфу не отправляет почему-то.

Всего записей: 351 | Зарегистр. 07-09-2016 | Отправлено: 21:52 10-04-2023 | Исправлено: Vladsvn, 21:53 10-04-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru