禁用提交按钮,直到多部分表单上的所有字段都有值
我创建了一个多部分表单,需要验证表单上可见字段集中已完成的字段。如果所有必填字段均已填写,则将启用下一步按钮。
到目前为止,我已经尝试过一些选项,但没有一个是 100% 有效的
HTML:
<div id="set1">
<fieldset>
<div>
<label>field 1</label>
<input name="f1" type="text" /><br />
<span class="error"></span>
</div>
<div>
<label>field 2</label>
<input name="f2" type="text" /><br />
</div>
</fieldset>
</div>
<div id="set2">
<fieldset>
<div>
<label>field 3</label>
<input name="f3" type="text" /><br />
<span class="error"></span>
</div>
.
.
.
</fieldset>
</div>
jQuery:
$input = $('fieldset:visible div:has(span[class="error"]) input');
$next = $('fieldset:visible .button');
$input.keyup(function() {
$input.each(function() {
var trigger = false;
$input.each(function() {
if (!$(this).val()) {
trigger = true;
}
});
trigger ? $next.attr('class', 'disable') : $next.removeAttr('class');
});
});
有人可以帮助我理解我做错了什么吗?看来 keyup 事件没有触发。
I have created a multi-part form and need to validate completed fields in visible fieldsets on the form. If all required fields are completed, the the next step button will be enabled.
So Far I have played with a few options none of which are 100% effective
HTML:
<div id="set1">
<fieldset>
<div>
<label>field 1</label>
<input name="f1" type="text" /><br />
<span class="error"></span>
</div>
<div>
<label>field 2</label>
<input name="f2" type="text" /><br />
</div>
</fieldset>
</div>
<div id="set2">
<fieldset>
<div>
<label>field 3</label>
<input name="f3" type="text" /><br />
<span class="error"></span>
</div>
.
.
.
</fieldset>
</div>
jQuery:
$input = $('fieldset:visible div:has(span[class="error"]) input');
$next = $('fieldset:visible .button');
$input.keyup(function() {
$input.each(function() {
var trigger = false;
$input.each(function() {
if (!$(this).val()) {
trigger = true;
}
});
trigger ? $next.attr('class', 'disable') : $next.removeAttr('class');
});
});
Could someone help me understand what I am doing wrong? It appears the keyup event is not firing.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该使用 jQuery 验证器。它会让你的生活变得更轻松:
jQuery Validation
You should use jQuery validator. It will make your life a lot easier:
jQuery Validation
首先,keyup 事件将会被触发,不用担心。第二件事,在
if (!$(this).val()) {
行有一个严重的错误,这个拼写是由标准 JavaScript 中的错误思维造成的。翻译成你想测试该值是否存在。事实是,价值确实始终存在。它只是“”或一个真实值。看看我的示例。经过一些更正后,它可以按您想要的方式工作,希望如此。
First thing, the keyup event will be fired, don't worry. Second thing, there is a heavy error at line
if (!$(this).val()) {
This spelling caused by wrong thinking in standard javascript. Translated to it you wanted to test if the value exists or not. The truth is, the value does always exists. It is just "" or a real value.Look at my example. After some corrections it works as you wanted, hopefully.