226

I have been searching ways to have jQuery automatically write required using html5 validation to my all of my input fields but I am having trouble telling it where to write it.

I want to take this

 <input type="text" name="first_name" value="" id="freeform_first_name"
 maxlength="150">

and have it automatically add required before the closing tag

 <input type="text" name="first_name" value="" id="freeform_first_name"
 maxlength="150" required>

I thought I could do someting along the lines of

$("input").attr("required", "true");

But it doesn't work. Any help is greatly appreciated.

4

6 回答 6

523
$("input").prop('required',true);

DEMO FIDDLE

于 2013-10-03T18:39:25.697 回答
59

您可以使用 attr 来做到这一点,您犯的错误是您将 true 放在引号内。而不是尝试这个:

$("input").attr("required", true);
于 2014-07-25T04:43:27.280 回答
37

我发现以下实现是有效的:

$('#freeform_first_name').removeAttr('required');

$('#freeform_first_name').attr('required', 'required');

这些命令(attr、removeAttr、prop)的行为因您使用的 JQuery 版本而异。请在此处参考文档:https ://api.jquery.com/attr/

于 2016-05-11T18:35:56.210 回答
12

使用.attr方法

.attr(attribute,value); // syntax

.attr("required", true);
// required="required"

.attr("required", false);
// 

使用.prop

.prop(property,value) // syntax

.prop("required", true);
// required=""

.prop("required", false);
//

从这里阅读更多

https://stackoverflow.com/a/5876747/5413283

于 2018-10-14T02:54:02.360 回答
7

不应该用双引号“”括起来true它应该像

$(document).ready(function() {            
   $('input').attr('required', true);   
});

你也可以使用道具

jQuery(document).ready(function() {            
   $('input').prop('required', true);   
}); 

而不是true你可以尝试 required 。如

$('input').prop('required', 'required');
于 2018-10-04T10:41:25.260 回答
6

我发现 jquery 1.11.1 不能可靠地做到这一点。

我用$('#estimate').attr('required', true)$('#estimate').removeAttr('required')

删除required不可靠。它有时会使required属性没有价值。由于required是一个布尔属性,它的存在,没有价值,被浏览器视为true.

这个错误是间歇性的,我厌倦了把它弄乱。切换到document.getElementById("estimate").required = truedocument.getElementById("estimate").required = false

于 2016-04-20T21:47:28.893 回答