簡體   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