2012-11-07 69 views
1

我有一個文本輸入字段,在頁面加載時由PHP填充。PHP填充的文本字段不會被JavaScript更改

<?php 
$product_price = 10000; 
?> 

<input type='text' name='product_price' value='<?=$product_price?>' > 

我有一些JavaScript代碼,檢查產品價格是否低於12000.如果是,我會做出警報。

if(product_price <= 12000){ 
    alert("product price must be above 12000"); 
} 

警報工作正常,但問題是,如果我輸入字段PRODUCT_PRICE的值更改爲50000,它仍然是激勵我說:「產品的價格必須高於12000」

爲什麼JS不能把我輸入該領域的價值? 爲什麼PHP的填充值沒有改變?

+0

解決了。謝謝 – chandoo

回答

1

輸入框的內容是一個字符串。使用parseInt(),如果是小於或等於12000

if(parseInt(product_price, 10) <= 12000){ 
    alert("product price must be above 12000"); 
} 

這將不會更新PHP變量,因爲在輸入字段和變量之間沒有結合其前檢查轉換。 JavaScript在客戶端上運行,而PHP代碼在服務器上運行。如果您想從用戶處獲得輸入信息,則必須使用form submit GET/POSTAjax for updating without reloading the page

+1

*總是*指定'parseInt'的基本參數:'parseInt(product_price,10)' - 否則像前導零這樣的事情會導致麻煩,因爲它們會將值轉換爲八進制數。 – ThiefMaster

1

您必須修改輸入字段,以便每當用戶按下某個鍵時,javascript product_price變量將使用輸入字段的當前內容進行更新。

<input type="text" name="product_price" onkeypress="product_price = this.value" value="<?=$product_price?>" > 

最好委託一個函數處理keypress事件來驗證用戶輸入。

<input type="text" name="product_price" onkeypress="updateProductPrice(this)" value="<?=$product_price?>" > 

function updateProductPrice(input) { 
    product_price = input.value; 
} 
相關問題