0

现在我有一个文本输入和一个 php 变量。

$price = 200;
<input type="text" name="promotion_code">

在用户输入 'promotion_code' 的值后,没有提交按钮或任何链接。
它可以匹配该页面上 javascript 之间的“promotion_code”。让我们说javascript:

var str="123203";

所以我想将 'promotion_code' 与 'var str' 匹配。
如果匹配则$price = $price - 10;
如果不匹配则 $price 值不会改变..任何可以帮助或任何方法来解决这个问题?

笔记 :!!被告知。此表单没有提交按钮.. 比较过程应该在用户输入时及时进行promotion_code

4

2 回答 2

1

你不应该用 JavaScript 来做这件事,它不够安全。任何人都可以通过查看您页面的源代码来查看您的 JavaScript 代码。

尝试使用 ajax 请求来实现。

jQuery.ajax({
    type : "post",
    url : "request.php",
    data : "code=" +jQuery("input[name=promotion_code]").val(),
    success : function(ret){
        jQuery("#price").text(ret);
    }
});

在这里,您使用值代码调用页面 request.php

这里可以是 request.php :

$price = 200;
$code = $_POST["code"];
if( $code == "123203" ){
    $price -= 10;
}
return $price;

然后使用 request.php 页面返回的数据更新价格字段。

当然,您必须调整该代码。我希望这会有所帮助。

于 2013-04-23T08:59:46.453 回答
1

确保在服务器上执行此操作,因为任何人都可以看到页面源代码中的代码。此外 $price 在服务器上,并且客户端值对服务器不可用,直到您使用例如 AJAX 将请求发送回服务器

所以像

<form action="purchase.php" id="form1">
  Promotion code: <input type="text" name="promotion_code" id="prCode" />
  <input type="button" id="prCodeBut" value="Apply" />
  Price: <input type="text" readonly="readonly" 
           name="finalprice" id="fPrice" value="<?PHP echo $price; ?>" />
</form>

JavaScript

演示 1 - 使用点击

var orgPrice = <?PHP echo $price; ?>;
window.onload=function() {
  document.getElementById("prCodeBut").onclick=function(){
    // hardcoding the promocode is NOT recommended
    if (document.getElementById("prCode").value == "<?php echo $promocode; ?>") {
      document.getElementById("fPrice").value=orgPrice-10;
    }
  }
}

演示 2 使用 onkeyup

var orgPrice = <?PHP echo $price; ?>;
window.onload=function() {
  document.getElementById("prCode").onkeyup=function(){
    // hardcoding the promocode is NOT recommended
    if (document.getElementById("prCode").value == "<?php echo $promocode; ?>") {
      document.getElementById("fPrice").value=orgPrice-10;
    }
  }
}

DEMO 3 使用 onblur

var orgPrice = <?PHP echo $price; ?>;
window.onload=function() {
  document.getElementById("prCode").onblur=function(){
    // hardcoding the promocode is NOT recommended
    if (document.getElementById("prCode").value == "<?php echo $promocode; ?>") {
      document.getElementById("fPrice").value=orgPrice-10;
    }
  }
}

Ajax 隐藏促销代码

// delay from http://stackoverflow.com/a/1909508/295783
var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();

$(function() {
  $("#prCodeBut").on("keyup",function() {
    delay(function() { 
      $.get("checkPromo.php",{promotion: $("#prCode").val()},function(data) {
        $("#fPrice").val(data);
      }); 
    },300);
  });
});
于 2013-04-23T09:08:52.327 回答