exec. РегВыр. Не хотят работать вместе.
Доброго времени суток, очень надеюсь на вашу помощь. Есть код:
$score = $("#score_sel option:selected").text(); $n_score = ( /\((\d+)\)/.exec($score))[1]; $drakes = $("#drakes_sel option:selected").text(); $n_drakes = ( /\((\d+)\)/.exec($drakes))[1]; В обоих случаях, есть некая переменная типа name_ (int) Нужно достать эти int и далее их обрабатывать (считать). Суть в том, что отдельно $n_score и $n_drakes выводятся (когда второй закомменчен). Как только я добавляю второй, сразу все перестают работать. Таких переменных у меня больше 2х. Не могу понять в чем проблема, где конфликт. Подскажите, кто сталкивался, спасибо =) |
Для извлечения из строки name_ (int) достаточно шаблона /\d+/
$score = +$("#score_sel option:selected").text().match(/\d+/) Странно почему текст опции, а не ее значение? |
Цитата:
|
Если в неком тексте опций необходимо выбирать цифры, то почему нельзя эти цифровые значения сразу определить в качестве их значений?
|
Цитата:
Опция1 Красный помидор Болгария (20) Опция2 Синий мандарин Уругвай (100) и тд. Бывают такие случаи, что попадаются Опция N Серобурмал123иновый Карт0фель (45) Пользователь выбирает и по ходу выбора, в поле ниже добавляются значения 20 +100 + 45. Так сложились звезды, что я как начинающий в этом деле, реализовал эту штуку именно так. Теперь нужно выцепить из текста эти значения. Поэтому для каждого селекта нужно прописать этот .exec . Для одного случая, все хорошо. Как только я добавляю второй, работа прекращается. В описании exec я не нашел ничего запрещающего. Поэтому обратился сюда. $score = +$("#score_sel option:selected").text().match( /\((\d+)\)/); $drakes = +$("#drakes_sel option:selected").text().match( /\((\d+)\)/); Такой способ выводит все значения, но, к сожалению, не определяет "NaN", как будто неверно регулярное выражение. Хотя, получить надо число именно в скобках (5). Других скобок нигде нет |
Тут не представлять надо, а думать. Если складываются цены, то почему эти цены прячутся в строки, откуда их выковыривать надо?
В БД данные хранят в структурированном виде, то есть имя Серобурмал123иновый, цена 45, идентификатор этой характеристики 5. Следовательно, если выбор опции отправляется на сервер, то выгоднее в value опции помещать идентификатор. Цену при этом можно поместить в атрибут, например, data-ptice="45". Обходом в цикле всех списков получить цену из data-ptice и суммировать. Все. |
Цитата:
|
Цитата:
Цитата:
<option value="10" data-price="45">Картофель сорт А12, цена 45 руб.</option> Есть проблемы здесь с описанием товара и отдельным значением его цены? |
Цитата:
<option value="1" > <?php print ($item1. ' (' .$score[0]['cost'].')'); ?> </option> <option value="1" > 0 - 2 (<?php echo($drake[0]['cost']); ?>) </option> Так выглядят варианты 1 и 1 двух селектов. Нужно выцепить $score[0]['cost'] и $drake[0]['cost']. Они содержат то, что нужно, в нужно int виде. Перед селектом подключен скрипт с запросом в БД. Чтобы вывести, как вы говорите, нужно еще и после селекта делать отдельный запрос с фильтром по выбранному value, для каждого селекта, чтобы выцепить 'cost'.. Проблема в том, что название селекта генерируется из БД =) |
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 15:52. |