match()函数和匹配变量

时间:2013-04-23 08:55:13

标签: php javascript var

现在我有一个文本输入和一个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

时,比较过程应该及时运行

2 个答案:

答案 0 :(得分: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页面返回的数据更新price字段。

您必须适应该代码。 我希望这可以提供帮助。

答案 1 :(得分: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

DEMO 1 - using click

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;
    }
  }
}

DEMO 2 using 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 using 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);
  });
});
相关问题