javascript - 填写表格时如何使进度条工作
问题描述
在填写姓氏、姓名等字段时,进度条应按 33% 的步长填充,填充颜色应改变:空 - 白色,33% - 浅绿色,66% 绿色,100% 深绿色)。
$("#form input").keyup(function() {
var numValid = 0;
$("#form input[required]").each(function() {
if (this.validity.valid) {
numValid++;
}
});
var progress = $("#progress"),
progressMessage = $("#progress-message");
if (numValid == 0) {
progress.attr("value", "0");
progressMessage.text("Complete the form.");
}
if (numValid == 1) {
progress.attr("value", "20");
progressMessage.text("There you go, great start!");
}
if (numValid == 2) {
progress.attr("value", "40");
progressMessage.text("Nothing can stop you now.");
}
if (numValid == 3) {
progress.attr("value", "60");
progressMessage.text("You're basically a hero, right?");
}
if (numValid == 4) {
progress.attr("value", "80");
progressMessage.text("They are going to write songs about you.");
}
if (numValid == 5) {
progress.attr("value", "95");
progressMessage.text("SO CLOSE.");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/action_page.php" id="form">
<div class="form-group">
<label for="name">Фамилия</label>
<input type="text" class="form-control" id="name" required>
</div>
<div class="form-group">
<label for="last-name">Имя</label>
<input type="text" class="form-control" id="last-name" required>
</div>
<div class="form-group">
<label for="surname">Отчество</label>
<input type="text" class="form-control" id="surname" required>
</div>
<div class="form-group">
<label for="btns">Меняли фамилию?</label>
<div class="btns">
<button type="button" class="btn btn-1">Да</button>
<button type="button" class="btn btn-1 btn-success">Нет</button>
</div>
</div>
<div class="form-group">
<label for="btns">Пол</label>
<div class="btns">
<button type="button" class="btn btn-2 btn-success">Муж</button>
<button type="button" class="btn btn-2">Жен</button>
</div>
</div>
<div class="form-group">
<label for="sel1">Семейное положение:</label>
<select class="form-control" id="sel1">
<option disabled selected>Женат/Замужем</option>
<option>Женат</option>
<option>Замужем</option>
</select>
</div>
<div class="progress-wrap">
<div class="progress-message" id="progress-message">Complete the form!</div>
<progress max="100" value="0" id="progress"></progress>
</div>
<div class="form-group">
<label for="number">Введите число!</label>
<input type="text" class="form-control" id="number" min="0" max="100">
</div>
<button type="button" class="btn btn-primary">Применить</button>
<div class="progress-wrap">
<div class="progress-message">Ваша форма заполнена на <span class="output">___</span> %</div>
<progress max="100" value="0" id="progress"></progress>
</div>
</form>
您可以看到,当您填写表格时,消息必须更改。但它不起作用!开发工具中没有错误。
解决方案
$('#form').on('keyup change paste', 'input, select', function(){
var numValid = 0;
$("#form input[required], #form select[required]").each(function() {
if (this.validity.valid) {
numValid++;
}
});
var progress = $(".progress"),
progressMessage = $(".progress-message");
if (numValid == 0) {
progress.attr("value", "0");
progressMessage.text("Complete the form.");
}
if (numValid == 1) {
progress.attr("value", "20");
progressMessage.text("There you go, great start!");
}
if (numValid == 2) {
progress.attr("value", "40");
progressMessage.text("Nothing can stop you now.");
}
if (numValid == 3) {
progress.attr("value", "60");
progressMessage.text("You're basically a hero, right?");
}
if (numValid == 4) {
progress.attr("value", "80");
progressMessage.text("They are going to write songs about you.");
}
if (numValid == 5) {
progress.attr("value", "95");
progressMessage.text("SO CLOSE.");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/action_page.php" id="form">
<div class="form-group">
<label for="name">Фамилия</label>
<input type="text" class="form-control" id="name" required>
</div>
<div class="form-group">
<label for="last-name">Имя</label>
<input type="text" class="form-control" id="last-name" required>
</div>
<div class="form-group">
<label for="surname">Отчество</label>
<input type="text" class="form-control" id="surname" required>
</div>
<div class="form-group">
<label for="btns">Меняли фамилию?</label>
<div class="btns">
<button type="button" class="btn btn-1">Да</button>
<button type="button" class="btn btn-1 btn-success">Нет</button>
</div>
</div>
<div class="form-group">
<label for="btns">Пол</label>
<div class="btns">
<button type="button" class="btn btn-2 btn-success">Муж</button>
<button type="button" class="btn btn-2">Жен</button>
</div>
</div>
<div class="form-group">
<label for="sel1">Семейное положение:</label>
<select class="form-control" id="sel1" required>
<option disabled selected>Женат/Замужем</option>
<option value="Женат">Женат</option>
<option value="Замужем">Замужем</option>
</select>
</div>
<div class="progress-wrap">
<div class="progress-message" id="progress-message">Complete the form!</div>
<progress max="100" value="0" class="progress"></progress>
</div>
<div class="form-group">
<label for="number">Введите число!</label>
<input type="text" class="form-control" id="number" min="0" max="100" required>
</div>
<button type="button" class="btn btn-primary">Применить</button>
<div class="progress-wrap">
<div class="progress-message">Ваша форма заполнена на <span class="output">___</span> %</div>
<progress max="100" value="0" class="progress"></progress>
</div>
</form>
推荐阅读
- javascript - pycurl javascript
- r - 在闪亮的应用程序中加载 rhandsontable 时,如何通过 updateSliderInput 更新滑块?
- angular - 使用 Angular-Cli 加载外部框架
- model-view-controller - Umbraco 问题得到寒冷的属性
- java - java.lang.IllegalArgumentException 如果尝试读取 Excel 表,则会出现异常
- eclipselink - Eclipselink 共享缓存 - 延迟关联
- python - xgboost 错误:不是有效的 Win32 应用程序
- javascript - 移动设备上的 Google 地图缩放级别
- jquery - 如何在剃刀页面中为模型提供 ID 以在 jquery 脚本中使用
- sql - msg 8152 级别 16 状态 2 字符串或二进制数据将被截断