【问题标题】:PHP populated text field is not changed by JavaScriptJavaScript 不会更改 PHP 填充的文本字段
【发布时间】:2012-11-07 07:52:27
【问题描述】:

我有一个文本输入字段,在页面加载时由 PHP 填充。

<?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 填充的值没有变化?

【问题讨论】:

    标签: php javascript textfield


    【解决方案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

    【讨论】:

    • 总是指定 parseInt 的基本参数:parseInt(product_price, 10) - 否则像前导零这样的东西会导致麻烦,因为它们会将值转换为八进制数。
    【解决方案2】:

    您必须修改输入字段,以便每当用户按下某个键时,javascript product_price 变量就会更新为输入字段的当前内容。

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

    最好将按键事件的处理委托给一个函数来验证用户输入。

    <input type="text" name="product_price" onkeypress="updateProductPrice(this)" value="<?=$product_price?>" >
    
    function updateProductPrice(input) {
        product_price = input.value;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多