2012-11-07 38 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; 
} 
相关问题