我想禁用提交按钮,直到所有字段都有值为止。我该怎么做呢?
<html>
<head>
<title></title>
<style type="text/css">
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#register').attr("disabled", true);
});
</script>
</head>
<body>
<form>
Username<br />
<input type="text" id="user_input" name="username" /><br />
Password<br />
<input type="text" id="pass_input" name="password" /><br />
Confirm Password<br />
<input type="text" id="v_pass_input" name="v_password" /><br />
Email<br />
<input type="text" id="email" name="email" /><br />
<input type="submit" id="register" value="Register" />
</form>
<div id="test">
</div>
</body>
</html>
发布于 2011-04-11 04:28:14
$('#user_input, #pass_input, #v_pass_input, #email').bind('keyup', function() {
if(allFilled()) $('#register').removeAttr('disabled');
});
function allFilled() {
var filled = true;
$('body input').each(function() {
if($(this).val() == '') filled = false;
});
return filled;
}
发布于 2013-09-22 15:37:28
对于所有的解决方案,而不是".keyup“,应该使用".change”,否则当有人为任何文本字段选择存储在cookies中的数据时,提交按钮将不会被禁用。
发布于 2011-04-11 05:00:33
所有变量都被缓存,因此循环和键控事件不必在每次运行时都创建jQuery对象。
var $input = $('input:text'),
$register = $('#register');
$register.attr('disabled', true);
$input.keyup(function() {
var trigger = false;
$input.each(function() {
if (!$(this).val()) {
trigger = true;
}
});
trigger ? $register.attr('disabled', true) : $register.removeAttr('disabled');
});
在http://jsfiddle.net/DKNhx/3/查看工作示例
https://stackoverflow.com/questions/5614399
复制相似问题