繁体   English   中英

输入验证的价格比较

[英]Price comparisons for input validation

我有三个输入字段。 两个是动态的,保存低价和高价的数值,而第三个是一个开放的输入字段,接收用户输入的价格。 我的目标是确保输入第三个字段的价格在最低价和最高价的范围内,如果不是,则应自动清除该字段并准备好新的输入,同时会显示错误弹出消息给用户。

我的问题是输入验证不允许此范围内的数字,并且由于代码未实现范围规则而阻止输入任何价格。 有人可以帮我检查我做错了什么。 我需要有效输入在低价和高价的范围内

我的代码如下:

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; ?>" />

我很确定你的 < & > 标志是倒着的。
如果您有这些数字的低价 5,提供 8 和高价 10,那么您的代码将如下所示
如果 5 < 8 那么(这是真的)
--不允许代码--
但是 8 在你的范围内。 我错过了什么吗?

编辑:我在评论中说明了这一点,但我也应该在这里澄清一下。 这是您的 OR 语句的问题。 OR 语句将所有语句一一运行,当遇到成功的 OR 语句时,立即运行代码。 因此,如果在第一条语句为 TRUE,它将不会读取 if 语句的 rest(除非它是一个复杂的 if 语句,一个带有一堆逻辑规则的语句),它将跳过所有其他语句。

这就是为什么您的代码没有运行的原因,首先是因为您的 < 和 > 符号是向后的,并且您的逻辑有缺陷。 当一个数字高于最低值时,很好,它可以工作,那么它永远不会读取 if 语句的 rest 因此,当它对第一个语句标记为 false 时,它将从第二个语句读取为 TRUE,然后它将继续进行。 这就是所有编程语言的使用方式,或者参考 boolean 逻辑表。

要修改您的代码以使其可用并使其工作(我相信您想要什么,以确保它落在两个边界内),它应该这样编写:

if(parseFloat(low_price) >= parseFloat(offer_price) || parseFloat(offer_price) >= parseFloat(high_price))
alert("NOT ALLOWED VALUES");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM