JQuery button change icon with onclick button
I have a form that looks like this:
<form name="armdisarmform" action="/cameras" method="POST">
<input type='hidden' name='armdisarmvalue' value="ENABLED"/>
<button class="armdisarm" name="armdisarmbutton" onClick='changeicon(this, "Disarm")'>Disarm</button>
</form>
Values are populated from the server:
<form name="armdisarmform" action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>" method="POST">
<input type='hidden' name='armdisarmvalue' value="<?php echo $userstatus; ?>"/>
<button class="armdisarm" name="armdisarmbutton" onClick='changeicon(this, "<?php echo $armdisarm; ?>")'><?php echo $armdisarm; ?></button>
</form>
Essentially, I have a button that changes its name to “Arm” or “Disarm” based on server entries or when someone clicks on it. I wanted to add unlock / lock icons from jquery button. So this works:
$(function() {
$( ".armdisarm" ).button({
icons: {
primary: "ui-icon-locked"
}
});
});
But when I pass this through a function, hoping to change the icons, it doesn't work:
var changeicon = function(t, armdisarm)
{
if (armdisarm == "Disarm")
{
$( ".armdisarm" ).button({
icons: {
primary: "ui-icon-unlocked"
}
});
}
else
{
$( ".armdisarm" ).button({
icons: {
primary: "ui-icon-locked"
}
});
}
}
Is it impossible?
How to do it: jsFiddle example .
JQuery
$(".armdisarm").button({
icons: {
primary: "ui-icon-locked"
}
});
$('button').click(function() {
$(this).data('state', ($(this).data('state') == 'disarm') ? 'arm' : 'disarm');
$(".armdisarm").button({
icons: {
primary: ($(this).data('state') == "disarm") ? "ui-icon-unlocked" : "ui-icon-locked"
}
});
});
Using the jQuery .data () function to maintain state (disarming / arm), you can easily switch the icon.
, :
<button class="armdisarm" name="armdisarmbutton" onClick='changeicon(this, "Disarm")'>Disarm</button>
, changeicon , , $document.ready(). - . javacsript. , .on() (, body).
CSS / toggleClass:
HTML:
<button class="armdisarm" name="armdisarmbutton">
<span class="disarm">Disarm</span>
<span class="arm">Arm</span>
</button>
CSS
.arm {
display: none;
}
.disarmed .arm {
display: inline;
}
.disarmed .disarm {
display: none;
}
JavaScript:
$("body").on('click', ".armdisarm", function() {
$(this).toggleClass('disarmed')
.find('.ui-button-icon-primary')
.toggleClass("ui-icon-locked ui-icon-unlocked");
return false;
});
: http://jsfiddle.net/jtbowden/GPKrP/
"" , toggleClass:
CSS
.arm {
display: none;
}
.disarmed .arm {
display: inline;
}
.disarmed .disarm {
display: none;
}
.disarmed .ui-button-icon-primary {
background-position: -208px -96px;
}
JavaScript:
$("body").on('click', ".armdisarm", function() {
$(this).toggleClass('disarmed');
return false;
});
PHP disarmed , .