jQuery add erforderlich zu Eingabefeldern


171

Ich habe nach Möglichkeiten gesucht, wie jQuery mithilfe der HTML5-Validierung automatisch in alle meine Eingabefelder schreiben kann, aber ich habe Probleme, anzugeben, wo es geschrieben werden soll.

Ich möchte das nehmen

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

und haben es automatisch add erforderlich vor dem letzten Tag

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

Ich dachte, ich könnte etwas in der Art von tun

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

Aber es funktioniert nicht. Jede Hilfe wird sehr geschätzt.


2
Ist es nicht in Dom fertig gewickelt? $(function(){....});
PSL


Wenn 'input' eine ID ist, fehlt der jquery hier das # im Selektor.
John Meyer

@ JohnMeyer "Eingabe" ist eine Tag-Auswahl. Keine # erforderlich, wenn auf Eingabe-Tags abgezielt wird
Spartacus

Antworten:


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

DEMO FIDDLE


1
Hmm, eine Senden-Schaltfläche wurde hinzugefügt, aber die Eingabefelder wurden noch nicht überprüft oder das erforderliche Attribut hinzugefügt. jsfiddle.net/japaneselanguagefriend/LEZ4r
Miura-shi

1
@ JohnMeyer "Eingabe" ist ein Tag-Selektor
morefromalan

1
habe einen TypeError: element.prop is not a functionFehler bekommen
davideghz

@ Miura-shi Sie vermissen die <form></form>Tags in Ihrem jsFiddle
JESTech

Wenn es jemanden helfen kann: dies war zunächst nicht für mich arbeiten , weil ich rufe .prop('required',true)am Eingang vor dem Aufruf .css("display", "block")auf sich.
Elektrotyp

52

Sie können dies mit attr tun. Der Fehler, den Sie gemacht haben, ist, dass Sie die wahren Anführungszeichen setzen. Versuchen Sie stattdessen Folgendes:

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

2
@ JohnMeyer "Eingabe" ist der Name eines Tag-Selektors
dave4jr

requiredist ein boolesches Attribut und sollte immer nur weggelassen werden (für "false") oder denselben Wert wie sein Name (dh "required") für "true" haben. Es ist eigentlich besser zu benutzen .prop().
Alnitak

@Alnitak Nicht, wenn Sie daran arbeiten, eine Site mit dem IE kompatibel zu machen, prop()funktioniert dies dort nicht wie in modernen Browsern. Immer noch am besten zu verwenden $(ele).attr("required", true)und falsezu entfernen.
Oliver Heward

29

Ich habe festgestellt, dass die folgenden Implementierungen effektiv sind:

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

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

Diese Befehle (attr, removeAttr, prop) verhalten sich je nach verwendeter Version von JQuery unterschiedlich. Bitte beziehen Sie sich auf die Dokumentation hier: https://api.jquery.com/attr/


6

Mit .attrMethode

.attr(attribute,value); // syntax

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

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

Verwenden von .prop

.prop(property,value) // syntax

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

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

Lesen Sie hier mehr

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


4

Ich habe festgestellt, dass jquery 1.11.1 dies nicht zuverlässig macht.

Ich habe $('#estimate').attr('required', true)und benutzt$('#estimate').removeAttr('required') .

Das Entfernen requiredwar nicht zuverlässig. Manchmal blieb das requiredAttribut ohne Wert. Da requiredes sich um ein boolesches Attibut handelt, wird seine bloße Präsenz ohne Wert vom Browser als angesehen true.

Dieser Fehler trat nur sporadisch auf, und ich hatte es satt, mich damit zu beschäftigen. Umgeschaltet auf document.getElementById("estimate").required = trueund document.getElementById("estimate").required = false.


removeAttrfunktioniert bei mir nicht Dann benutze ich deine Lösung und funktioniert gut. Vielen Dank!
Diego Somar

4

Sollte true nicht mit einem doppelten Anführungszeichen "" einschließen , sollte es so sein

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

Sie können auch Stütze verwenden

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

Anstelle von true können Sie es bei Bedarf versuchen. Sowie

$('input').prop('required', 'required');
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.