2015-12-15 81 views
0

我正在尝试保存flipswitch的值,并且在重新加载webapp之后,具有与状态相同值的选项应该处于活动状态。即如果您选择<option id="v2" value="0">OFF</option>,则Cookie status的值为0,并且在重新加载页面后,翻转开关应显示OFF更改flipswitch jquery mobile的活动状态

现在每次重新加载后,第一个选项总是自动选中,并且该值也是。我该如何改变它?

我flipswitch:

<select id="status" name="status" data-role="flipswitch"> 
    <option id="v1" value="1">ON</option> 
    <option id="v2" value="0">OFF</option> 


</select> 

我的PHP代码片段:

$t = time() + 60 * 60 * 24 * 1000; 
     setcookie("status", $_POST['status'], $t); 

我自己尝试:

function state() { 
var statuse = <?php echo $_COOKIE['status']; ?>; 

if (statuse == 0) { 
    $('#v2').addClass('ui-flipswitch-active'); 

} 
if (statuse == 1) { 
    $('#v1').addClass('ui-flipswitch-active'); 

} 
} 

state(); 

函数调用PHP脚本:

function status() { 
     var stats = $("#status").val(); 
    $.ajax({ url: 'status.php', 

     data: {status: stats}, 
     type: 'post', 
     success: function(output) { 
         //alert(output); 
        } 
}); 
} 

status(); 
setInterval(function(){ 
    status() // this will run after every 5 seconds 
}, 5000); 

回答

1

我会尝试以下方法加载的页面加载正确的switchstate:

<select id="status" name="status" data-role="flipswitch" class=""> 
    <option id="v1" value="1" <?php if (isset($_POST['status]') && $_POST['status'] == 1) echo 'class="ui-flipswitch-active"'; ?>>ON</option> 
    <option id="v2" value="0" <?php if (!isset($_POST['status]') || $_POST['status'] == 0) echo 'class="ui-flipswitch-active"'; ?>>OFF</option> 
</select> 

如果你这样做之后使用JavaScript和网页加载很慢你一个'闪烁',因为它需要一段时间来处理JavaScript。

和JavaScript:

$("#status").change(function() { 
    var stats = $("#status").val(); 
    $.ajax({ url: 'status.php', 
    data: {status: stats}, 
    type: 'post', 
    success: function(output) { 
        //alert(output); 
       } 
    }); 
}); 

时触发选择的改变事件通过这种方式,它开始了ajax查询。确保php脚本具有session_start();否则,它可能不会工作。