现在我有一个文本输入和一个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
时,比较过程应该及时运行
答案 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 强>
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;
}
}
}
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;
}
}
}
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);
});
});