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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 120 121 122 123 124 125

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

jason32



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

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

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

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

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

Всего записей: 742 | Зарегистр. 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);

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



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

Всего записей: 742 | Зарегистр. 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");
}

Всего записей: 1506 | Зарегистр. 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 я так себе знаю и плохо помню, но функции вот так работают в языках программирования

Всего записей: 742 | Зарегистр. 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");
}

Всего записей: 16424 | Зарегистр. 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>");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Всего записей: 1506 | Зарегистр. 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));

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



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

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

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

Всего записей: 16424 | Зарегистр. 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>, просто не делайте этого.

Всего записей: 16424 | Зарегистр. 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 120 121 122 123 124 125

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru