Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2020, 06:35
Новичок на форуме
Отправить личное сообщение для farikweb Посмотреть профиль Найти все сообщения от farikweb
 
Регистрация: 20.05.2020
Сообщений: 2

Проверка значения в input
Здравствуйте. Помогите разобраться.

Нужно проверить значение в input согласно элементам массива и создать столько условий сколько элементов в массиве.

Есть два массива:
var cities = ["Симферополь", "Симферополь"];
var cities2 = ["Коктебель", "Алушта"];


Вот кусочек кода:
if ((jQuery("#from").val().indexOf("Симферополь") !== -1) && (jQuery("#to").val().indexOf("Коктебель") !== -1)) {
    var curPrice = 2000;
} else if ((jQuery("#to").val().indexOf("Симферополь") !== -1) && (jQuery("#from").val().indexOf("Коктебель") !== -1)) {
    var curPrice = 2000;
} else if ((jQuery("#from").val().indexOf("Симферополь") !== -1) && (jQuery("#to").val().indexOf("Алушта") !== -1)) {
    var curPrice = 1000;
} else if ((jQuery("#to").val().indexOf("Симферополь") !== -1) && (jQuery("#from").val().indexOf("Алушта") !== -1)) {
    var curPrice = 1000;
} else {
    var curPrice = +(jQuery("#price" + jQuery("#class").val()).val()) * Math.floor(length);
}

Последний раз редактировалось farikweb, 20.05.2020 в 06:42.
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2020, 07:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,643

farikweb,
includes
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2020, 08:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,096

Если Симферополь всегда в условии зачем же это проверять, проверять только Алушта и Коктебель, и достаточно одного условия.
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2020, 13:21
Новичок на форуме
Отправить личное сообщение для farikweb Посмотреть профиль Найти все сообщения от farikweb
 
Регистрация: 20.05.2020
Сообщений: 2

Сообщение от laimas Посмотреть сообщение
Если Симферополь всегда в условии зачем же это проверять, проверять только Алушта и Коктебель, и достаточно одного условия.
Симферополь не всегда в условии поэтому нужно проверять.
При проверке есть ньюанс, например порядковый номер условии должен совпадать с индексом массива.
Ответить с цитированием
  #5 (permalink)  
Старый 20.05.2020, 13:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,096

Сообщение от farikweb
Симферополь не всегда в условии поэтому нужно проверять.
Для изменения цены по вашим условиям всегда. То есть:

1) Определили цену как сумму двух полей.
2) Получили значения проверяемых полей.
3) Если в полученном есть значение Симферополь, то проверяем второе значение: если оно равно Алушта, то цену определяем равной 2000 и если более нет городов, то иначе 1000. Иначе проверяем и на Коктебель.
4) Иначе цена остается ранее определенной.

let price = 500, //цена по значениям двух полей  
    check = 'Симферополь',
    values = [check, 'b']; //значения проверяемых полей как массив 

if(values.includes(check)){
    values = values.filter(v => v !== check).pop();
    price = values == 'b' ? 2000 : values == 'c' ? 1000 : price;
}

console.log(price);

Последний раз редактировалось laimas, 20.05.2020 в 14:26.
Ответить с цитированием
  #6 (permalink)  
Старый 20.05.2020, 14:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,643

farikweb,
<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>
<form action="http://" name="form">
<label for="from">from:</label>
<input list="from-city" id="from" name="from" />

<datalist id="from-city">
    <option value="Симферополь">
    <option value="Коктебель">
    <option value="Алушта">
</datalist>
<label for="to">to:</label>
<input list="to-city" id="to" name="to" />

<datalist id="to-city">
    <option value="Симферополь">
    <option value="Коктебель">
    <option value="Алушта">
</datalist>
<output></output>
</form>
<script>
document.addEventListener("DOMContentLoaded", function() {
    let form = document.forms.form;
    let msg = document.querySelector("output");
    const Price = {
  "Симферополь-Коктебель" : 2000,
  "Коктебель-Симферополь" : 2000,
  "Симферополь-Алушта" : 1000,
  "Алушта-Симферополь" : 1000
    };

    const choice = function(event) {
        let from = form.from.value;
        let to = form.to.value;
        let key = `${from}-${to}`;
        let curPrice = key in Price ? Price[key] : 0;
        msg.innerHTML = curPrice;
    }

   form.addEventListener("input", choice)
});


</script>

</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 20.05.2020, 14:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,096

Вау, зачем столько много?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие input, проверка значения DivMan Events/DOM/Window 22 25.06.2017 10:39
Динамическое копирование значения из input в input с одинаковыми атрибутами name ami_moor jQuery 2 10.08.2016 17:02
Проверка значения в input stepanenkoalex91 Events/DOM/Window 3 15.06.2016 14:22
Множественные значения в input - ЗА ВОЗНАГРАЖДЕНИЕ! Pb160 Events/DOM/Window 0 03.08.2015 12:29
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 18:27