对具有相同 id 的多个元素进行文本验证
Text validation on multiple elements with the same id
我有多个表单的输入元素,它们在同一页面中具有相同的ID。每个窗体在添加新团队名称、修改团队名称或删除团队名称时具有相同的操作(创建、更新和删除)。我试图想出一种简单的文本验证技术,以便在该特定形式的文本框为空时显示一条消息。我想出了这个,它适用于页面中第一个表单中的第一个元素。
function showProgressOfNameChange(){
var newName = document.getElementById("newName").value;
if (newName == null || newName == "") {
document.getElementById("error").innerHTML = "Name must not be empty";
document.getElementById("newName").style.backgroundColor = "#ff8";
return false;
}
$("#loading-div-background").show();
}
但这不适用于同一页面中 id=newName 的其他元素。也许我应该使用 getElementsByClass,但不确定如何让它工作......如果我将所有 id 更改为唯一,如何编写函数来检查多个唯一 ID?
正如你所建议的,你需要使用class而不是ID,因为ID必须是唯一的,那么你可以使用getElementsByClassName()来获取所有元素与所述类,然后你迭代返回的元素列表并对每个项目进行验证
function showProgressOfNameChange() {
var els = document.getElementsByClassName("newName"),
newName;
for (var i = 0; i < els.length; i++) {
newName = els[i].value;
if (newName == null || newName == "") {
document.getElementById("error").innerHTML = "Name must not be empty";
els[i].style.backgroundColor = "#ff8";
return false;
}
}
$("#loading-div-background").show();
return true;
}
既然你用jQuery标记了它
function showProgressOfNameChange() {
var valid = true;
$('.newName').each(function () {
if (this.value == null || this.value == "") {
valid = false;
$(this).css('background-color', '#ff8');
}
})
$("#loading-div-background").toggle(valid);
$("#error").toggle(!valid)
if (!valid) {
$("#error").html("Name must not be empty");
}
return valid;
}
演示:小提琴
相关文章:
- 从所有元素中删除HTML5验证
- 在验证器中添加自定义规则以检查<ul>具有元素
- 使用jquery验证函数不适用于select元素
- validate.js验证数组元素
- 如何在JavaScript而不是HTML元素中设置AngularJS验证
- 使用webdriver和selenium验证元素是否不存在
- 如何对未知表单元素进行表单验证
- 验证元素值和复选框的Javascript
- 使用html 5对元素执行自定义表单验证功能
- Javascript:表单验证getElementById仅返回第一个id元素
- 表单元素值更改后的角度 JS 验证
- jQuery 验证 - 调用某些元素的 .valid() 方法不会清除错误
- 对具有相同 id 的多个元素进行文本验证
- 扩展验证.js并验证单个元素
- 使用EJS模板进行HTML验证;文本/模板”;元素
- 验证嵌套在ng中的输入元素repeat也用于页面加载,而不仅仅用于更改
- 正在验证PHP中表单元素的动态数量
- If-Statement中的Javascript元素验证
- JavaScript元素验证
- 根据需要使用循环和标签元素验证表单