jQuery aggiunto richiesto ai campi di input


171

Ho cercato modi per richiedere automaticamente la scrittura di jQuery utilizzando la convalida html5 in tutti i miei campi di input, ma ho problemi a dirlo dove scriverlo.

Voglio prenderlo

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

e lo hanno aggiungerà automaticamente richiesto prima del tag di chiusura

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

Pensavo di poter fare qualcosa del genere

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

Ma non funziona Qualsiasi aiuto è molto apprezzato.


2
Non è pronto per il dom? $(function(){....});
PSL


se 'input' è un ID, qui jquery manca il # nel selettore.
John Meyer,

@JohnMeyer "input" è un selettore di tag. Nessun numero necessario se si scelgono come target i tag di input
Spartacus,

Risposte:


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

DEMO FIDDLE


1
Hmm, aggiunto un pulsante di invio ma ancora non convalidando o aggiungendo l'attributo richiesto ai campi di input. jsfiddle.net/japaneselanguagefriend/LEZ4r
Miura-shi,

1
@JohnMeyer "input" è un selettore di tag
more da

1
ha ricevuto un TypeError: element.prop is not a functionerrore
davideghz,

@ Miura-shi Ti mancano i <form></form>tag nel tuo jsFiddle
JESTech

Se può aiutare qualcuno: all'inizio non funzionava per me perché stavo chiamando .prop('required',true)l'input prima di richiamarlo .css("display", "block").
elettrotipo il

52

Puoi farlo usando attr, l'errore che hai fatto è che hai messo le vere virgolette dentro. invece di questo prova questo:

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

2
@JohnMeyer "input" è il nome di un selettore di tag
dave4jr

requiredè un attributo booleano e dovrebbe essere sempre e solo omesso (per "falso") o avere lo stesso valore del suo nome (cioè "required") per "vero". In realtà è meglio usare .prop().
Alnitak,

@Alnitak Non se stai lavorando per rendere un sito compatibile con IE, prop()non funziona lì come sui browser moderni. Ancora meglio da usare $(ele).attr("required", true)e falseda rimuovere.
Oliver Heward,

29

Ho scoperto che le seguenti implementazioni sono efficaci:

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

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

Questi comandi (attr, removeAttr, prop) si comportano diversamente a seconda della versione di JQuery in uso. Fare riferimento alla documentazione qui: https://api.jquery.com/attr/


6

Usando il .attrmetodo

.attr(attribute,value); // syntax

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

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

utilizzando .prop

.prop(property,value) // syntax

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

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

Leggi di più da qui

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


4

Ho scoperto che jquery 1.11.1 non lo fa in modo affidabile.

Ho usato $('#estimate').attr('required', true)e$('#estimate').removeAttr('required') .

La rimozione requirednon è stata affidabile. A volte lascerebbe l' requiredattributo senza valore. Poiché requiredè un attobuto booleano, la sua semplice presenza, senza valore, è vista dal browser cometrue .

Questo bug era intermittente e mi sono stancato di rovinarlo. Passato a document.getElementById("estimate").required = truee document.getElementById("estimate").required = false.


removeAttrnon funziona con me. Quindi uso la tua soluzione e funziona benissimo. Grazie!
Diego Somar,

4

Non dovrebbe racchiudere true tra virgolette doppie "", dovrebbe essere come

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

Inoltre puoi usare prop

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

Invece di vero puoi provare richiesto. Ad esempio

$('input').prop('required', 'required');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.