选中复选框时更改div的背景图像

时间:2015-11-07 08:34:46

标签: javascript css liferay

我隐藏了默认复选框,而是使用带有自定义复选框图像的div:

<aui:form>
<c:if
    test="<%=company.isAutoLogin() && !PropsValues.SESSION_DISABLED%>">
    <div class="rememberImage ftr" id="rememberImg">
        <aui:input checked="<%=rememberMe%>" name="rememberMe" id="rememberMe"
                            type="checkbox" cssClass="remember"/>
    </div>
</c:if>
</form>

//omiited

<aui:script use="aui-base">     
        function changeBG() {
            if (this.checked) {
                document.getElementById('rememberImg').style.backgroundImage = 'url(../img/chk_none.png)';
            } else {
                document.getElementById('rememberImg').style.backgroundImage = 'url(../img/chk_check.png)';
            }       
        }

        document.getElementById('_58_rememberMe').addEventListener('change', changeBG);


        var password = A.one('#<portlet:namespace />password');

        if (password) {
            password.on(
                'keypress',
                function(event) {
                    Liferay.Util.showCapsLock(event, '<portlet:namespace />passwordCapsLockSpan');
                }
            );
        }
    </aui:script>

这根本不起作用。有什么建议??非常感谢!

更新:添加更多我认为可能存在问题的代码行

5 个答案:

答案 0 :(得分:3)

我在上面看到了一个正确的答案,但是为了避免使用JS听众侵入HTML标签,这被认为不是最佳做法,我将为您提供此解决方案......

function changeBG() {
    if (this.checked) {
        document.getElementById('myElement').style.backgroundImage = 'url(.....)';
    } else {
        document.getElementById('myElement').style.backgroundImage = 'url(.....)';
    }       
}

document.getElementById('myInput').addEventListener('change', changeBG);

希望它会对你有所帮助:)。

答案 1 :(得分:1)

您可以这样做:将onclick属性添加到触发切换功能的复选框。由于我无法使用您的代码测试它(缺少其余的代码),我只能为您提供身体背景发生变化的示例

<input id="check" type="checkbox" onclick="toggle();"> Click me

<script>

    function toggle() {

        if( document.getElementById("check").checked ) {
                document.getElementsByTagName("body")[0].style.backgroundColor="red";
        }
    }

</script>

答案 2 :(得分:1)

&#13;
&#13;
div{
    margin: 20px 0;
}
input[type=checkbox] {
    display: none
}
input[type=checkbox]+label {
    background: url(http://s17.postimg.org/phsoii5vf/check.png) no-repeat;
    padding-left: 30px;
    padding-bottom: 5px;
    padding-top: 2.5px;
    height: 18px;
}

input[type=checkbox]:checked+label {
    background: url(http://s2.postimg.org/zbjg138np/check_tick.jpg) no-repeat;    
}
&#13;
<div>
    <input type="checkbox" id="chk1">
    <label for="chk1">Custom Checkbox1</label>
</div>
<div>
    <input type="checkbox" id="chk2">
    <label for="chk2">Custom Checkbox2</label>
</div>
<div>
    <input type="checkbox" id="chk3">
    <label for="chk3">Custom Checkbox3</label>
</div>
<div>
    <input type="checkbox" id="chk4">
    <label for="chk4">Custom Checkbox4</label>
</div>
&#13;
&#13;
&#13;

不需要javascript.you可以从css。

<div>
<input type="checkbox" id="chk">
<label for="chk">Custom Checkbox1</label>
</div>

input[type=checkbox] {
    display: none
}
input[type=checkbox]+label {
    background: url(../images/check.png) no-repeat;
    padding-left: 30px;
    padding-bottom: 5px;
    padding-top: 2.5px;
    height: 18px;
}

input[type=checkbox]:checked+label {
    background: url(../images/check_tick.png) no-repeat;    
}

答案 3 :(得分:0)

你可以尝试这个:

document.getElementById('rememberImage').style.background = 'url(../img/chk_check.png)';

答案 4 :(得分:0)

function SetBackground(elm){
  if($(elm).is(":checked"))
    {
  $("#rememberImage").css({"background-color":"gray"});
      }
  else
    {
    $("#rememberImage").css({"background-color":"white"});
    }
  
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="rememberImage ftr" id="rememberImage">              
    <input checked="<%=rememberMe%>" name="rememberMe" id="rememberMe" type="checkbox" onchange="SetBackground(this)"/>                        
</div>

我不知道您的自定义复选框如何工作,但是,您可以添加onchange事件并检查是否选中了复选框,然后更改div的背景。

祝你好运