Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2016, 18:27
Новичок на форуме
Отправить личное сообщение для Joliat Посмотреть профиль Найти все сообщения от Joliat
 
Регистрация: 03.10.2013
Сообщений: 7

Помогите с регуляркой
Добрый день. Мучаюсь довольно долго, прийти к правильному решению не могу.
Есть input:
<input id="all_block" type="text" value="is105x1,is132x5,is123x1">

Нужно найти по id инпута кусок строки, и заменить число на соответствующий вводимый "множитель".
К примеру есть часть html:
<input id="is105" type="text" value="1" onkeyup="test(this.id);">
<input id="is132" type="text" value="1" onkeyup="test(this.id);">
<input id="is123" type="text" value="1"  onkeyup="test(this.id);">

Пользователь меняет значение инпута id="is132" на 5 и value инпута id="all_block" должна иметь вид: "is105x1,is132x5,is123x1"

В голове уже полная белеберда, регулярку составить не получается. Кто знает как реализовать, прошу помощи. Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2016, 18:59
Новичок на форуме
Отправить личное сообщение для Joliat Посмотреть профиль Найти все сообщения от Joliat
 
Регистрация: 03.10.2013
Сообщений: 7

Пробую так:
function test(id) {	
	var mn = document.getElementById(id).value;	
	var all_block = document.getElementById('all_block').value;
	alert(all_block.replace(/([\s\S]*)+'id'+x([\s\S]*)\,([\s\S]*)/gi, '$1x'+mn+',$3'));	
}

При изменении любого инпута (is105, is132, is123), "думает" 1-2 секунды и выдает значение инпута id="all_block" без изменений.
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2016, 19:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Joliat,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
window.addEventListener("DOMContentLoaded", function() {
    var all_block = document.querySelector("#all_block"),
        inp = document.querySelectorAll("#is105, #is132, #is123"),
    f = function() {
        all_block.value = [].map.call(inp, function(el) {
            //el.value = +el.value || 1;
            return el.id + "x" + el.value
        })
    };
    [].forEach.call(inp, function(item) {
        item.addEventListener("input", f)
    })
});
  </script>
</head>

<body>
<input id="all_block" type="text" value="is105x1,is132x5,is123x1" size="45">
<input id="is105" type="text" value="1" >
<input id="is132" type="text" value="1" >
<input id="is123" type="text" value="1" >


</body>
</html>

Последний раз редактировалось рони, 14.12.2016 в 19:40.
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2016, 19:36
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <meta http-equiv="X-UA-Compatible" content=" IE=edge, chrome=1">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
        <meta name="keywords" content="">
        <meta name="description" content="">
    </head>
    <body>
        <input id="all_blocks" type="text" value="is105x1,is132x5,is123x1">
        <input id="is105" type="text" value="1">
        <input id="is132" type="text" value="1">
        <input id="is123" type="text" value="1">

        <script>

(function() {
    var all_blocks = document.getElementById("all_blocks");

    document.addEventListener("input", function(event) {
        var input = event.target;
        all_blocks.value = all_blocks.value.replace(new RegExp("(^|,)(" + input.id + ")x(.*?)(,|$)", "gi"), '$1$2x' + input.value + '$4');
    });
})();


        </script>
    </body>
</html>

Последний раз редактировалось Malleys, 14.12.2016 в 19:42.
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2016, 20:00
Новичок на форуме
Отправить личное сообщение для Joliat Посмотреть профиль Найти все сообщения от Joliat
 
Регистрация: 03.10.2013
Сообщений: 7

рони, Malleys, спасибо большое. Остановился на последнем варианте, он для меня более понятный.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с регуляркой, пожалуйста lvovitch Общие вопросы Javascript 3 11.11.2015 08:24
помогите с регуляркой ast_ross Общие вопросы Javascript 40 01.02.2013 20:08
Помогите разобраться с регуляркой shtormIK Общие вопросы Javascript 6 26.06.2012 20:02
Помогите с регуляркой tazododu Общие вопросы Javascript 11 01.03.2010 09:42
Помогите с регуляркой... alexKniaz AJAX и COMET 0 03.11.2008 01:16