Javascript 遍历每个输入字段时验证所需字段

Javascript 遍历每个输入字段时验证所需字段,javascript,jquery,Javascript,Jquery,我有一些动态生成的html输入控件。某些控件具有必需的属性。当我遍历这些字段时,我希望聚焦空字段并进行验证。但我想避免隐藏场。我必须只添加validate required属性。还要避免隐藏字段。这是我试过的代码 $(“输入、选择、文本区域”)。每个(函数(){ var元素=$(此) if(element.val()==“”) $(this.focus() 返回错误 }); 您可以使用attr函数获取HTML的输入标记的详细信息,例如:$(此)。attr('hidden')将返回当前输入标记的属

我有一些动态生成的html输入控件。某些控件具有必需的属性。当我遍历这些字段时,我希望聚焦空字段并进行验证。但我想避免隐藏场。我必须只添加validate required属性。还要避免隐藏字段。这是我试过的代码

$(“输入、选择、文本区域”)。每个(函数(){
var元素=$(此)
if(element.val()==“”)
$(this.focus()
返回错误
});

您可以使用
attr
函数获取
HTML
输入标记的详细信息,例如:
$(此)。attr('hidden')
将返回当前输入标记的属性值

检查工作示例。

回答 由于验证是如何工作的——特别是在Chrome中,您需要绕过表单的正常验证。为此,您需要在
表单
标签上设置属性
novalidate
,然后为
提交
事件提供自定义验证

为什么?

默认情况下,Chrome会在提交前验证表单-这是一个很酷的想法-但不幸的是,这个过程在实践中失败了,因为它不允许表单中有
隐藏的
元素。事实上,它抛出了一个错误(名为“”的无效表单控件不可聚焦)。如果不考虑我个人对这个设计缺陷的看法,它可能是一个令人沮丧的障碍,直到你遇到它时你才知道

其次,提交where字段时有时会出现问题,
必填项
隐藏项
都可能导致错误,或导致表单被静默搁置。要解决这个问题,您可以在提交之前删除
required
属性,然后在自定义验证之后重新应用到这些元素


例子:
$(“表格”)
.关于(“提交”,职能(e){
e、 预防默认值();
设hidden_required=[],
无效形式=假;
$(“表格”)
.children(“输入:文本、选择、文本区域”)
.每个(功能(i,ele){
让prop=ele.tagName==“textarea”?“textContent”:“value”;
如果(ele.required&&ele[prop]==“”){
if(ele.classList.contains(“隐藏”)){
ele.required=false;
需要隐藏式按钮(ele);
}否则{
ele.focus();
无效形式=真;
}
}
} );
如果(!无效的表格){
//ajax提交吗
警告(“有效形式”);
}否则{
//保持警惕或其他什么
}
需要隐藏\u.forEach(功能(ele){
ele.required=true;
} );
返回false;
} );
。隐藏{
可见性:隐藏;
}





要创建一个或多个指令块,如聚焦输入控件并退出
。each()
当其中一个输入控件为空时,必须将这些指令用大括号括起来
{}
。是否可以发布至少一个输入字段的HTML代码?或者将选择器更改为
输入[必需]:可见
?是否有任何隐藏字段是“必需的”?因为这将导致一系列其他问题