js回车键登录与alert模态框回车键冲突问题解决
当用户没有输入密码或者输入错误,会弹出警告框提示,这时按回车键关闭警告框的时候也会提交表单,而且按钮value='登录中...' 属性disabled="disabled",就造成了冲突。
所以我的解决办法是给回车键加一个判断,逻辑很简单,下面直接看代码。
<body οnkeydοwn="keyLogin();">
<div class="loginFormSubmit">
<button type="button" class="am-btn am-btn-primary" οnclick="login();">登录</button>
</div>
<div class="am-modal am-modal-alert" tabindex="-1" id="my-alert">
<div class="am-modal-dialog">
<div class="am-modal-hd"></div>
<div class="am-modal-bd alert-msg">
</div>
<div class="am-modal-footer">
<span class="am-modal-btn" id="login_confirm" οnclick="change_status();">确定</span>
</div>
</div>
</div>
</body>
<script>
function keyLogin() {
if(event.keyCode == 13) {
//event.stopPropagation();
if($('#my-alert').css('display') == 'none'){
$('.loginFormSubmit>button').click();
}else{
$('#login_confirm').click();
}
}
}
// 异步登录
function login() {
$('.loginFormSubmit>button[type=button]').attr('disabled','disabled').html('<i class="am-icon-spinner am-icon-spin"></i>登录中...');
setTimeout(ajax_login(), 2000);
}
function ajax_login() {
var login_url = $('.loginForm').attr('action'),
login = $("#login").val(),
password = $('#password').val(),
remember = $('#remember').val();
$.ajax({
url: login_url,
type: 'POST',
dataType: 'json',
data: {'login' : login, 'password' : password, 'remember' : remember},
success: function(json) {
// console.log(json);return;
if(json.code == 404) {
$('#my-alert .alert-msg').html(json.err);
$('#my-alert').modal();
return false;
} else if(json.code == 300) {
$('#my-alert .alert-msg').html(json.err);
$('#my-alert').modal();
return false;
} else if(json.code == 200) {
$('.loginFormSubmit>button').html('正在跳转...');
window.location.href = json.redirect;
}
}
})
}
function change_status() {
$('.loginFormSubmit>button[type=button]').attr('disabled', false).html('登录');
}
</script>