使用纯JavaScript解决方案。
在选择JavaScript标签中提出问题。
HTML表单:
<form action="/signup">
<div>
<label for="username">User Name</label>
<input type="text" name="username" required/>
</div>
<div>
<label for="password">Password</label>
<input type="password" name="password" />
</div>
<div>
<label for="r_password">Retype Password</label>
<input type="password" name="r_password" />
</div>
<div>
<label for="email">Email</label>
<input type="text" name="email" />
</div>
<input type="submit" value="Signup" disabled="disabled" />
</form>
JavaScript:
var form = document.querySelector('form')
var inputs = document.querySelectorAll('input')
var required_inputs = document.querySelectorAll('input[required]')
var register = document.querySelector('input[type="submit"]')
form.addEventListener('keyup', function(e) {
var disabled = false
inputs.forEach(function(input, index) {
if (input.value === '' || !input.value.replace(/\s/g, '').length) {
disabled = true
}
})
if (disabled) {
register.setAttribute('disabled', 'disabled')
} else {
register.removeAttribute('disabled')
}
})
一些解释:
在这段代码中,我们在HTML表单上添加了keyup事件,并且在每次按键时检查所有输入字段。如果至少有一个输入字段为空或仅包含空格字符,则将true
值分配给disabled
变量并禁用提交按钮。
如果您需要在填写所有必填输入字段之前禁用提交按钮 - 请替换:
inputs.forEach(function(input, index) {
使用:
required_inputs.forEach(function(input, index) {
其中required_inputs
是已经声明的数组,只包含必填的输入字段。
JSFiddle演示:https://jsfiddle.net/ydo7L3m7/
$('input').val().length > 0
只检查第一个输入。 - epascarellorequired
? - JanLeeYu