Сравнение цен для проверки ввода - PullRequest
0 голосов
/ 06 августа 2020

У меня три поля ввода. Два из них - это динамические c и содержат числовые c значения низкой и высокой цены, а третье - это открытое поле ввода, в которое вводятся цены, введенные пользователем. Моя цель - убедиться, что цена, введенная в третье поле, попадает в диапазон между низкой и высокой ценой, и если это не так, поле должно быть автоматически очищено и готово для нового ввода, пока на экране появится всплывающее сообщение об ошибке. user.

Моя проблема в том, что проверка ввода не позволяет вводить числа в этом диапазоне и предотвращает ввод любой цены, потому что код не реализует правило диапазона. Может ли кто-нибудь помочь мне проверить, что я делаю не так. Мне нужно, чтобы действительный ввод находился в диапазоне низких и высоких цен

Мой код ниже:

function pricerange()
{
var  lowprice=document.getElementbyId(low_price).value; 
var offerprice=document.getElementbyId(offer_price).value
var high_price=document.getElementbyId(high_price).value
if(parseFloat(low_price) <parseFloat(offer_price) || parseFloat(offer_price) >parseFloat(high_price) )
alert('not allowed');
}

Мой код для очистки поля, если введенные данные недействительны:

function EraseField(frm){
frm.offer_price.value = ""
}

Мои поля ввода:

<input type="text" id="lowp" name="lowp" value="<?= $min_price_range; ?>" />
<input id="offer_price" name="offer_price" onfocus="EraseField(this.form)" onkeyup="priceband() type="text" class="form-control">
<input type="text" id="highp" name="highp" value="<?= $max_price_range; ?>" />

1 Ответ

0 голосов
/ 06 августа 2020

Я почти уверен, что вы сделали знаки <&> задом наперед.
если у вас есть эти числа: низкая цена 5, предлагаемая 8 и высокая цена 10, тогда ваш код будет выглядеть так
если 5 <8, то (что ИСТИНА) <br>- не разрешать код -
, но 8 попадает в ваши границы. Я что-то упустил?

Изменить: я заявил об этом в комментарии, но я должен уточнить это и здесь. Это проблема с вашими операторами OR. Операторы OR проходят через все операторы один за другим, сразу же, когда он встречает успешный оператор OR, он запускает код. Таким образом, если он имеет значение ИСТИНА в первом операторе, он НЕ БУДЕТ читать остальную часть оператора if (если только это не сложный оператор if, содержащий кучу правил logi c), он пропустит все остальное.

Вот почему ваш код не работает, во-первых, потому что ваши знаки <и> перевернуты, а ваш logi c ошибочен. Когда число выше наименьшего, отлично, оно работает, , тогда оно никогда не прочитает остальную часть оператора if . Поэтому, когда он помечается как ложный для первого оператора, он будет считаться ИСТИННЫМ для второго, и он будет продолжен в любом случае. Так используют все языки программирования или, обратитесь к логической таблице c.

Чтобы пересмотреть ваш код, чтобы сделать его пригодным для использования и заставить его работать (что, я думаю, вы хотите, чтобы убедиться, что он попадает в две границы), он должен быть написан следующим образом:

if(parseFloat(low_price) >= parseFloat(offer_price) || parseFloat(offer_price) >= parseFloat(high_price))
alert("NOT ALLOWED VALUES");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...