Javascript获取包含值的所有输入元素
我正在使用querySelectorAll()JS函数检索datagrid表(aspx页)下的所有元素,datagrid包含几个复选框/文本框,有一个保存按钮,只有在满足以下规则时才应启用该按钮: 至少需要选中一个复选框或至少需要一个文本框包含文本(非空) 是否有方法检查由querySelectorAll()返回的文本框输入元素是否有值Javascript获取包含值的所有输入元素,javascript,Javascript,我正在使用querySelectorAll()JS函数检索datagrid表(aspx页)下的所有元素,datagrid包含几个复选框/文本框,有一个保存按钮,只有在满足以下规则时才应启用该按钮: 至少需要选中一个复选框或至少需要一个文本框包含文本(非空) 是否有方法检查由querySelectorAll()返回的文本框输入元素是否有值 function validate() { var search = document.getElementById("myGrdID"
function validate() {
var search = document.getElementById("myGrdID").children;
//var hasAnyText = search[0].querySelectorAll("input:valid");
var hasAnyChecked = search[0].querySelectorAll("input:checked");
console.log("Any check? " + hasAnyChecked.length);
}
我想避免使用Jquery,因为它已经成功地获取了所有选中的输入元素,但却找不到一种方法来查找所有带有值的文本框(任何值都不是特定的字符串)。您能使用
过滤器
功能吗
var results = hasAnyChecked.filter(input => input.value != null)
编辑:我下面的评论是有道理的,但如果您使用这些选择器,您将无法检查多个场景:
var results = hasAnyChecked.filter(input => input.value !== null || input.value !== false) // Handles both text inputs and checkboxes
可以使用循环遍历输入元素并检查它们的值:函数checkInputs(){const inputs=document.getElementsByTagName('input');for(让i=0;i
.checkValidity()
而不是.value
来检查输入字段的有效性,而不是它的值。const filled=search[0]。querySelectorAll(“input[type=text”).filler(inp=>inp.value.trim()!=”)
@mplungjan我认为您必须使用扩展运算符,因为节点列表并不完全是一个数组。const textboxs=search[0]。querySelectorAll('.-textbox selector name');const hasAnyEmptyText=[…textboxs]。filter(input=>input.value!='')是的,我想你是对的-只是从我的手机上快速评论一下input.value!==false
是没有用的。试试input.value.trim()===”
instead,OP正在寻找文本框而不是复选框