Jquery2.1.3的attr取不到checkbox的勾选状态解决办法

本文介绍了一个登录页面中遇到的问题:无论是否选中“记住我”复选框,其值始终为undefined。通过引入jQuery迁移脚本解决了问题,并最终采用属性方法而非属性方法来正确获取复选框的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来是一个很简单的登录页面,有一个记住我的选框使用的是checkbox

<div class="loginDetail">
    <s:form class="logFrm" action="sys-login.gxad" method="post" id="loginForm" onsubmit="return formSubmit();">
        <ul class="loginWrite">
            <li>
                <input type="text" class="form-control userName" placeholder="用户名" name="user.loginName" id="myUserCode">
            </li>
            <li>
                <input type="password" class="form-control psd" placeholder="密码" name="user.loginPass" id="myPassword">
            </li>
            <li class="rebpd">
                <input id="rememberMe" type="checkbox">
                <span>记住密码</span>
            </li>
            <li>
                <button class="btn btn-large btn-block btn-primary loginBtn" type="submit">登录</button>
            </li>
        </ul>
    </s:form>
</div>
****使用的是2.1.3版本的jquery****
<script src="common/js/jquery-2.1.3.min.js"></script>
<script src="common/js/jquery.cookie.js"></script>
<script src="common/js/zui.js"></script>
<script src="common/js/jquery-ui.js"></script>
<script src="common/js/common.js"></script>
<script src="common/js/login.js"></script>

在login.js中的formSubmit方法如下

    function formSubmit(){
		if($.trim($('#myUserCode').val()) == ''){
			DilogValid("请输入用户名!");
			$('#myUserCode').focus();
			return false;
		}
		if($.trim($('#myPassword').val()) == ''){
			DilogValid("请输入密码");
            $('#myPassword').focus();
            return false;
        }
		//添加Cookie
		alert($('#rememberMe').attr('checked'));
		if($('#rememberMe').attr('checked')){
			if($.trim($('#myUserCode').val()) != "" && $.trim($('#myPassword').val()) != "")
			{
            	$.cookie('GXLOGIN', $('#myUserCode').val(), { expires: 365 }); 
            	$.cookie('GXPASSWORD', $('#myPassword').val(), { expires: 365 }); 
			}
        }else{
        	$.removeCookie('GXLOGIN'); 
        	$.removeCookie('GXPASSWORD');
        }
		return true;
    }

记住密码这种一般都是用存浏览器COOKIE的方式,以上代码的记过就是不管rememberMe这个复选框是不是已经选中,alert出来的全部都是undefined;后来经过在网上查找相关jquery升级的相关改动;

说是有一种可以兼容旧版本的js,<script src="common/js/jquery-migrate.js"></script>,没想到真的可以用,而且还给我打印出了怎样将已经废弃掉的东西改正过来的方法

JQMIGRATE: jQuery.fn.attr('checked') may use property instead of attribute

意思很明白了  使用property代替attribute

于是将login.js里面的取attr的换成prop

if($('#rememberMe').prop('checked')){

然后将<script src="common/js/jquery-migrate.js"></script>的引用去掉就可以了;

转载于:https://my.oschina.net/u/2354306/blog/647301

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值