页面刷新后,OnChange选项保持不变

时间:2014-03-19 05:18:50

标签: javascript php onchange

我有这个用于货币转换的脚本,所以用户可以从像我们这样的列表中选择它的货币,所以我想让它在页面刷新后保持相同,就像用户选择了Euro并且他刷新页面它应该保持相同。

这是我的Javascript和代码

<script>
function updatePrice(val) {
    p = document.getElementById("original_price").value;
    newp = p * val;
    document.getElementById("calculated_price").value = newp;
}

</script>

Php代码:

 <?php  
    $pr = 180;
    ?>
    <select onchange="updatePrice(this.value)">
        <option value="1">US</option>
        <option value="98">RS</option>
        <option value="61">Ind</option>
    </select>
    <input type="hidden" id="original_price" value="<?php echo $pr; ?>" />
    Price: <input type="text" id="calculated_price" value="<?php echo $pr; ?>" />

实施会话后更新1

<?php
session_start();
// store session data
$_SESSION['value']=".updatePrice(this.value).";

if(isset($_SESSION['value']));

?>

<?php  

$pr = 180;

?>
<select onchange="<?php echo $_SESSION['value']; ?>">
    <option value="1">US</option>
    <option value="98">RS</option>
    <option value="61">Ind</option>
</select>

<br>
<hr>


<input type="hidden" id="original_price" value="<?php echo $pr; ?>" />
Price: <input type="text" id="calculated_price" value="<?php echo $pr; ?>" />


<script>
function updatePrice(val) {
    p = document.getElementById("original_price").value;
    newp = p * val;
    document.getElementById("calculated_price").value = newp;
}

</script>

2 个答案:

答案 0 :(得分:3)

实际上,PHP dosent提供任何viewstate机制,据我所知,所以你可以做的是将它存储在一些隐藏的领域。最好的方法和我的个人建议是为此目的使用会话变量

http://www.w3schools.com/Php/php_sessions.asp

如果您需要使用javascript解决此问题,您也可以使用Cookie

http://www.w3schools.com/js/js_cookies.asp

我通过设置cookie使用jquery和javascript完成了这个,因此我不希望你与cookie的jquery插件混淆。您可以使用jquery插件为cookie更简单地执行此操作。 这是代码

HTML

<select id="selectCurrency">
    <option value="1">US</option>
    <option value="98">RS</option>
    <option value="61">Ind</option>
</select>

的jquery / JavaScript的

$(document).ready(function(e){
 var name = "Currency=";
 var ca = document.cookie.split(';');
 for(var i=0; i<ca.length; i++){
    var c = ca[i].trim();
    if (c.indexOf(name)==0) $('#selectCurrency').val(c.substring(name.length,c.length));
  }
});

$('#selectCurrency').change(function(e){
    var cookieVal = "Currency="+$(this).val();
    document.cookie = cookieVal ;

  });

小提琴

http://jsfiddle.net/AmarnathRShenoy/HM3Zj/

答案 1 :(得分:0)

您可以使用会话或将所选值存储在数据库中的某个位置,在更新价格函数中进行ajax调用,在onchange事件中存储,您选择的值并保持pdating。现在,每次刷新页面时,都会从数据库中获取先前选择的值,然后您可以将其显示为选中状态。

相关问题