问题
I have button that gets disabled when you click it but when I refresh the page it should still be disabled. How can I do this?
<button onclick="this.disabled = true">Disable</button>
回答1:
You should use cookies. Javascript won't preserve page state after page refresh (unless you are doing server side of course):
DEMO
Code:
function setCookie(name, value){
// Set cookie to `namevalue;`
// Won't overwrite existing values with different names
document.cookie = name + value + ';';
}
function checkIfClicked(){
// Split by `;`
var cookie = document.cookie.split(";");
// iterate over cookie array
for(var i = 0; i < cookie.length; i++){
var c = cookie[i];
// if it contains string "click"
if(/click/.test(c))
return true;
}
// cookie does not exist
return false;
}
// Set clicked to either the existing cookie or false
var clicked = checkIfClicked();
// Check if it was clicked before
alert(clicked);
// Get the button
var button = document.getElementsByTagName("button")[0];
// If it had been clicked, diable button
if (clicked) button.disabled = true;
// Add event listener
// When button clicked, set `click` cookie to true
// and disable button
button.addEventListener("click", function(){
setCookie("click", "true");
button.disabled = true;
}, false);
回答2:
<button id="clic">Click For Disable</button>
function setCookie(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
}
else var expires = "";
document.cookie = name + "=" + value + expires + "; path=/";
}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
$('#clic').click(function(){
$(this).attr('disabled',true);
setCookie('DisableBtn', true, null);
});
if(getCookie('DisableBtn'))
$('#clic').attr('disabled',true);
来源:https://stackoverflow.com/questions/22279372/javascript-for-keeping-buttons-disabled-even-after-refreshing