Javascript 覆盖html5验证
我正在编写一个简单的登录表单,其中包含两个字段:Javascript 覆盖html5验证,javascript,jquery,html,dom-events,Javascript,Jquery,Html,Dom Events,我正在编写一个简单的登录表单,其中包含两个字段: <form> <input type="email" name="email" required /> <input type="password" name="password" required /> <button type="submit">Log in</button> </form> 登录 对于现代浏览器,验证是自动触发的 然而,如果Javasc
<form>
<input type="email" name="email" required />
<input type="password" name="password" required />
<button type="submit">Log in</button>
</form>
登录
对于现代浏览器,验证是自动触发的
然而,如果Javascript可用,我想接管html5表单验证,并自己处理所有事情
我希望自动验证“onblur”(仅受影响的字段),并希望在单击“提交”时验证所有字段
不过,onblur事件工作正常。。按下“提交”时,不会触发标准的“提交”事件。但是,会触发“无效”事件;但仅适用于第一个无效事件
告诉浏览器忽略所有与HTML5相关的验证并接管整个过程的好方法是什么?这个答案不正确。请看Willyde的回答。
很简单,只需将novalidate
属性添加到您不希望浏览器验证的任何元素,如下所示:
<form>
<input type="email" name="email" required novalidate />
<input type="password" name="password" required />
<button type="submit">Log in</button>
</form>
请注意,即使某些浏览器可能支持输入元素上的属性novalidate,HTML代码也不会验证
<button name="btn_act" value="Submit" type="submit" class="btn">Submit</button>
<button name="btn_act" value="save" type="submit" class="btn">Save</button>
$(document).on('click','[name="btn_act"]',function(){
var $form = $(this).closest('form');
//console.log($form);
if(this.value === 'save')
$form[0].noValidate = true;
else
$form[0].noValidate = false;
//$form.data('validator').cancelSubmit = true;
//$form.submit();
});
根据文件,没有这样的属性。只有FORM元素可以包含novalidate属性
$("input[required],select[required],textarea[required]").removeAttr('required');
$("input[required],select[required],textarea[required]").removeAttr('required');
如果你想要有条件的HTML5验证操作 我的条件是,如果用户想要保存数据,但当它想要发送表单时,我想要停止验证
<button name="btn_act" value="Submit" type="submit" class="btn">Submit</button>
<button name="btn_act" value="save" type="submit" class="btn">Save</button>
$(document).on('click','[name="btn_act"]',function(){
var $form = $(this).closest('form');
//console.log($form);
if(this.value === 'save')
$form[0].noValidate = true;
else
$form[0].noValidate = false;
//$form.data('validator').cancelSubmit = true;
//$form.submit();
});
提交
拯救
$(文档)。在('click','name=“btn_act”]”上,函数(){
var$form=$(this).closest('form');
//console.log($form);
如果(this.value==='save')
$form[0]。noValidate=true;
其他的
$form[0]。noValidate=false;
//$form.data('validator')。cancelSubmit=true;
//$form.submit();
});
但如果javascript不可用,我仍然希望浏览器进行验证。然后用javascript添加novalidate属性。或者用javascript将required
属性设置为false
。我自己应该能够得出这个答案:)谢谢!在最新的Chrome或Firefox中,向输入字段添加novalidate
属性到今天为止都不起作用。请参阅:+1。formnovalidate
属性仅在form
元素上受支持,并且只能由提交按钮和图像上的formnovalidate
属性替代。“常规”输入没有这样的属性。事实上,我不知道这个解决方案在发布答案时是否有效,但在最新的Chrome和Firefox()中,到今天为止还没有。嘿,请接受我的回答,接受威利的,这是不正确的。