function show1() {
//Your show() code here
$('.hideable').attr('required', 'required');
}
function hide1() {
//Your hide() code here
$('.hideable').removeAttr('required');
}
$('form')
.attr('novalidate', true)
.on('submit', function(){
var isValid = true;
$('input:visible,select:visible,textarea:visible', this).each(function() {
// report validity returns validity of input and display error tooltip if needed
isValid = isValid && this.reportValidity();
// break each loop if not valid
return isValid;
});
// do not submit if not valid
return isValid;
})
// this is out of a class, so you have to remove this...
// if you have problems you can write me ;)
this.elSendButton = this.elForm.querySelector("Button");
this.elSendButton.addEventListener("click", async (e) => {
e.preventDefault();
if (validateFormOnlyVisableInputs(this.elForm)) {
this.elForm.submit();
...
7条答案
按热度按时间4c8rllxm1#
你可以使用这个技巧:
HTML表单内部:
CSS类:
ha5z0ras2#
您可以为html中的所有必需属性添加类名:
并且,通过js事件(如单击),您可以启用或禁用所需的属性:
yqkkidmi3#
添加一个类
.hideable
到你的hideable required输入中,然后用下面的函数代替show()和hide():7cwmlq894#
1 -将表单更改为“novalidate”
2 -捕获提交事件
3 -强制浏览器使用input.reportValidity()分别检查每个可见输入
我为此制作了一个JQuery工具,它也使用一个变异观察器来自动应用于动态创建的表单。
https://github.com/severinmoussel/VisibilityFormValidator/blob/master/VisibilityFormValidator.js
50pmv0ei5#
我为内置的
show()
和hide()
编写了一个直接替换,它删除了hide
上的required
,并将它们恢复到show
上(对于所有子元素)。UPD:在此作为要点发布,以防有人想添加任何内容https://github.com/alex-jitbit/jquery-required-visibility/blob/main/showhide.js
jpfvwuh46#
您可以添加
pointer-events: none;
,这样用户就不能点击隐藏的元素,并且当您悬停它时光标也不会改变。taor4pac7#
一种解决方案是编写自己的验证函数:
此函数以默认方式检查所有文本区域和输入,但首先检查输入是否显示。
您必须在submit-button上添加一个eventlistener并调用valdation函数: