Un controllo modulo non valido con nome = '' non è attivabile


671

Ho un problema acuto sul mio sito web. In Google Chrome alcuni clienti non sono in grado di passare alla mia pagina di pagamento. Quando provo a inviare un modulo ottengo questo errore:

An invalid form control with name='' is not focusable.

Questo è dalla console JavaScript.

Ho letto che il problema potrebbe essere dovuto ai campi nascosti con l'attributo richiesto. Ora il problema è che stiamo utilizzando i validatori di campo obbligatori dei moduli web .net e non l'attributo html5 richiesto.

Sembra casuale chi ottiene questo errore. C'è qualcuno che conosce una soluzione per questo?


11
Se pensi che potrebbe essere dovuto a campi obbligatori nascosti, forse dovresti controllare se in alcuni casi quei campi rimangono vuoti? Ad esempio, se inserisci user_id dalla sessione o qualcosa di simile, in alcuni casi potrebbe rimanere vuoto?
dkasipovic,

1
Concordato. Apri la console per gli sviluppatori (F12) in Google Chrome ed esamina i valori dei campi per vedere se i valori per questi campi sono vuoti.
The Vanilla Thrilla

Grazie per il tuo commento. Non mi dà alcun senso, però? Ho un semplice modulo asp.net, che utilizza i controlli del modulo asp.net. I controlli di input sono generati dal framework.
mp1990,

Ho controllato e ci sono valori nei campi di input. Ho un campo di input nascosto che ha anche un valore.
mp1990,

3
Penso che accada quando il campo è obbligatorio ma non è "visibile" in termini generali. Mi è capitato in una forma suddivisa in più schede il campo che ha innescato l'errore è in una scheda che non è attiva al momento
dell'invio

Risposte:


818

Questo problema si verifica su Chrome se un campo modulo non riesce a convalidare, ma a causa del rispettivo controllo non valido non focalizzabile il tentativo del browser di visualizzare il messaggio "Compila questo campo" accanto ad esso non riesce.

Un controllo modulo potrebbe non essere focalizzabile al momento dell'attivazione della convalida per diversi motivi. I due scenari descritti di seguito sono le cause più importanti:

  • Il campo è irrilevante in base al contesto attuale della logica aziendale. In un tale scenario, il rispettivo controllo dovrebbe essere rimosso dal DOM o non dovrebbe essere contrassegnato con l' requiredattributo in quel punto.

  • La convalida prematura può verificarsi a causa di un utente che preme il tasto INVIO su un input. Oppure un utente che fa clic su un pulsante / controllo di input nel modulo che non ha definito typecorrettamente l' attributo del controllo. Se l'attributo type di un pulsante non è impostato su button, Chrome (o qualsiasi altro browser per quella materia) esegue una convalida ogni volta che si fa clic sul pulsante perché submitè il valore predefinito dell'attributo di un pulsante type.

    Per risolvere il problema, se si dispone di un pulsante sulla pagina che fa qualcosa di altro che presentare o di reset , ricordarsi sempre di fare questo: <button type="button">.

Vedi anche https://stackoverflow.com/a/7264966/1356062


2
Questo problema può verificarsi quando una pagina viene creata e testata con un browser che non supporta la convalida del client o che non impedisce l'invio del modulo (consultare Safari). Lo sviluppatore o l'utente successivo con un browser che impedisce effettivamente l'invio di moduli su errori lato client (vedi Chrome; anche su elementi di modulo nascosti) incontra il problema di un modulo inaccessibile in quanto non è possibile inviare il modulo e non riceve alcun messaggio da il browser o il sito. Prevenire del tutto la convalida tramite 'novalidate' non è una risposta corretta poiché la convalida sul lato client dovrebbe supportare gli input dell'utente. La modifica del sito Web è la soluzione.
Graste

4
Grazie per la risposta dettagliata Omettere requiredo aggiungere novalidatenon è mai una buona soluzione.
fatCop,

2
Questa dovrebbe essere la risposta corretta. Se si utilizza la convalida lato client html5, l'aggiunta di correzioni novalidate a un problema durante la creazione di un altro. In realtà Chrome vuole convalidare un input che non viene mostrato (e quindi non dovrebbe essere richiesto).
kheit,

1
Solo lasciando un esempio nel mio caso, aveva un numbercampo nascosto in cui il valore predefinito non era divisibile uniformemente per la dimensione del passo. La modifica della dimensione del passaggio ha risolto il problema.
James Scott,

3
@IgweKalu buona chiamata. Mi sono imbattuto in questa implementazione di TinyMCE su un campo textarea. TinyMCE nasconde il campo modulo originale (che era "obbligatorio") e attiva questo errore. Soluzione, rimuovi l'attributo "obbligatorio" ora nascosto dal modulo e fai affidamento su un altro metodo per assicurarti che sia compilato.
john

355

L'aggiunta di un novalidateattributo al modulo aiuterà:

<form name="myform" novalidate>

41
Non è un rischio per la sicurezza. (Affidarsi ai controlli sul lato client è.) È un problema di usabilità.
Jukka K. Korpela,

9
Ho provato e ho scoperto che "novalidate" non è richiesto! Ho appena dato un nome al mio modulo e tutto ha funzionato bene!
Sunny Sharma,

33
Ho provato e ho scoperto che "novalidate" è effettivamente richiesto. Solo l'aggiunta di un nome di modulo non funziona.
Jeff Tian,

13
L'aggiunta di novalidate interrompe anche la convalida lato client, ad esempio con la gemma Rails Simple Form. Meglio rendere non necessari i campi problematici, secondo la risposta di Ankit + il commento di David Brunow.
acciaio,

9
Ho scoperto che "Un controllo modulo non valido con nome = '' non è focalizzabile." mostra anche se gli ingressi sono in<fieldset>
oscargilfc il

261

Nella vostra form, si potrebbe avere nascosto inputavere requiredattributi:

  • <input type="hidden" required />
  • <input type="file" required style="display: none;"/>

Non formpuoi concentrarti su quegli elementi, devi rimuovere requiredda tutti gli input nascosti o implementare una funzione di validazione in javascript per gestirli se hai davvero bisogno di un input nascosto.


7
Ho notato che ciò può accadere anche con campi di tipo "email" impostati per non visualizzare nessuno, il problema causato da Chrome che cerca di convalidare il formato.
David Brunow,

3
Non è necessario required. patternda solo può causare questo problema.
Pacerier,

3
Nel mio caso, i campi del modulo non erano di tipo = "nascosto", ma erano semplicemente nascosti, ad esempio in un modulo con schede.
Josh Mc

Ho due moduli, uno con entrambi uno <input type="hidden" required />e l'altro con un <input type="text" style="display: none" required />, e l'unico che mostra l'errore in Chrome è il display: none, mentre quello "hidden"si presenta bene.
Pere,

Questa è la risposta corretta Chrome sta tentando di convalidare un campo che è stato nascosto nei CSS. Lo sta impedendo di mostrare il suo messaggio di avviso di convalida e ti sta avvisando di questo fatto.
Superluminario,

33

Nel caso in cui qualcun altro abbia questo problema, ho sperimentato la stessa cosa. Come discusso nei commenti, era dovuto al tentativo del browser di convalidare i campi nascosti. Stava trovando campi vuoti nella forma e cercava di focalizzarsi su di essi, ma poiché erano impostati su display:none;, non poteva. Da qui l'errore.

Sono stato in grado di risolverlo usando qualcosa di simile a questo:

$("body").on("submit", ".myForm", function(evt) {

    // Disable things that we don't want to validate.
    $(["input:hidden, textarea:hidden, select:hidden"]).attr("disabled", true);

    // If HTML5 Validation is available let it run. Otherwise prevent default.
    if (this.el.checkValidity && !this.el.checkValidity()) {
        // Re-enable things that we previously disabled.
        $(["input:hidden, textarea:hidden, select:hidden"]).attr("disabled", false);
        return true;
    }
    evt.preventDefault();

    // Re-enable things that we previously disabled.
    $(["input:hidden, textarea:hidden, select:hidden"]).attr("disabled", false);

    // Whatever other form processing stuff goes here.
});

Inoltre, questo è probabilmente un duplicato di "Controllo modulo non valido" solo in Google Chrome


6
Se ti senti propenso a votare questa risposta, lascia un commento per farmi sapere perché. Preferirei rimuovere la risposta se contiene informazioni errate piuttosto che lasciarla qui e fuorviare la comunità.
Horatio Alderaan,

1
Non voterò in giù, ma sento che questo codice utilizza un approccio di "mascheramento del problema" a forza bruta. Ha sicuramente utilità quando si tratta di codice legacy, ma per i progetti più recenti consiglierei di esaminare il problema un po 'più difficile. Questa risposta si applica anche all'utilizzo di "novalidate" sul tag del modulo, ma è un po 'più visibile. +1 per disabili invece di rimozione richiesta.
Jonathan DeMarks,

1
Per dare un po 'di contesto, ero esattamente nella situazione di "gestire il codice legacy" quando ho riscontrato questo problema. Sono pienamente d'accordo che si tratti di un hack. Molto meglio progettare il markup in modo da non incontrare questa situazione. Tuttavia, con basi di codice legacy e sistemi CMS non flessibili, ciò non è sempre possibile. L'approccio sopra di disabilitare invece di usare "novalidate" è stato il modo migliore per pensare al problema.
Horatio Alderaan,

2
Sono d'accordo con l'approccio di disabilitare i campi nascosti. La rimozione dei loro attributi "obbligatori" perde le informazioni se dovessero essere mostrate nuovamente in un secondo momento. Riattivare loro manterrebbe questo, tuttavia.
Druckles,

1
Adoro questa soluzione e penso che funzioni bene quando si dispone di un modulo con input che possono essere visualizzati o nascosti in modo variabile in base ai valori selezionati di altri input. Ciò mantiene le impostazioni richieste e consente comunque l'invio del modulo. Ancora meglio, se la validazione fallisce e l'utente fa qualcosa di completamente diverso, non sono necessari reimpostamenti aggiuntivi.
lewsid,

17

Nel mio caso il problema era con l' input type="radio" requiredessere nascosto con:

visibility: hidden;

Questo messaggio di errore mostrerà anche se il tipo di input richiesto radioo checkboxha una display: none;proprietà CSS.

Se si desidera creare input radio / casella di controllo personalizzati in cui devono essere nascosti dall'interfaccia utente e mantenere comunque l' requiredattributo, è necessario utilizzare invece:

opacity: 0; Proprietà CSS


stesso problema con l'eccezione che sto usando la libreria selectivity.js che nasconde la casella di selezione corrente e mostra una casella js alternativa con js e css. quando uso richiesto su di esso genera questo errore form-field.js: 8 create: 1 Un controllo modulo non valido con name = 'listing_id' non è focalizzabile. ciao sugestion come posso lavorare intorno.
Inzmam ul Hassan,

@InzmamGujjar, come ho capito, il tuo plugin js sta creando un altro input di selezione con le sue classi. Forse alterando le classi CSS del plugin o selezionando l'input creato name=""invece di quello originale?
Gus,

13

Nessuna delle risposte precedenti ha funzionato per me e non ho campi nascosti con l' requiredattributo.

Nel mio caso, il problema è stato causato dall'avere a <form>e quindi a <fieldset>come primo figlio, che contiene <input>l' requiredattributo. Rimozione del <fieldset>risolto il problema. Oppure puoi avvolgere il tuo modulo con esso; è consentito da HTML5.

Sono su Windows 7 x64, versione Chrome 43.0.2357.130 m.


Ha avuto lo stesso problema, grazie per il suggerimento. Gestito per risolverlo con la tua soluzione, è strano.
Ben

Grazie, questo è stato il problema anche nel mio caso.
fantasticrice

nel mio caso questo suggerimento mi aiuta
Anja Ishmukhametova,

2
Anche i fieldset erano il mio problema. Nel mio caso, la risposta è stata trovata qui: stackoverflow.com/a/30785150/1002047 Sembra essere un bug di Chrome (poiché l'HTML in questione viene convalidato utilizzando il validatore del W3C). La semplice modifica dei miei set di campi in div ha risolto il problema.
Eric S. Bullington,

@ EricS.Bullington grazie per averlo sottolineato. Non sapevo di quella risposta; come quell'utente, l'ho trovato da solo "tagliando" pezzi del mio modulo. A proposito, non conosco il sistema di numerazione delle versioni di Chrome, ma da 124 a 130 in 4 anni non sembra un grande passo ...
Pere

9

Ancora un'altra possibilità se stai ricevendo l'errore su un input della casella di controllo. Se le tue caselle di controllo utilizzano CSS personalizzati che nascondono il valore predefinito e lo sostituiscono con qualche altro stile, ciò attiverà anche l'errore non focalizzabile in Chrome su errore di convalida.

Ho trovato questo nel mio foglio di stile:

input[type="checkbox"] {
    visibility: hidden;
}

La soluzione semplice era sostituirla con questa:

input[type="checkbox"] {
    opacity: 0;
}

Questa è stata anche la soluzione che ho trovato funzionare meglio. Consente al messaggio di errore di essere effettivamente visualizzato vicino ai controlli del modulo invisibile.
Rob

8

Può essere che tu abbia campi nascosti (display: none) con l' attributo richiesto .

Verifica che tutti i campi richiesti siano visibili all'utente :)


7

Per me questo succede, quando c'è un <select>campo con opzione preselezionata con valore di '':

<select name="foo" required="required">
    <option value="" selected="selected">Select something</option>
    <option value="bar">Bar</option>
    <option value="baz">Baz</option>
</select>

Sfortunatamente è l'unica soluzione cross-browser per un segnaposto ( Come faccio a creare un segnaposto per una casella 'seleziona'? ).

Il problema si presenta su Chrome 43.0.2357.124.


7

Se si dispone di un campo con l'attributo richiesto che non è visibile durante l'invio del modulo, verrà generato questo errore. È sufficiente rimuovere l'attributo richiesto quando si tenta di nascondere quel campo. È possibile aggiungere l'attributo richiesto nel caso in cui si desideri visualizzare nuovamente il campo. In questo modo, la tua convalida non sarà compromessa e allo stesso tempo, l'errore non verrà generato.


Suggerimento: $("input").attr("required", "true"); o al $("input").prop('required',true);contrario è possibile removel' attributo / proprietà . >> jQuery aggiunto richiesto ai campi di input
fWd82

7

Per il problema di Select2 Jquery

Il problema è dovuto alla convalida HTML5 che non può focalizzare un elemento non valido nascosto. Mi sono imbattuto in questo problema quando avevo a che fare con il plugin jQuery Select2.

Soluzione È possibile iniettare un listener di eventi e un evento "non valido" di ogni elemento di un modulo in modo da poterlo manipolare poco prima dell'evento di convalida HTML5.

$('form select').each(function(i){
this.addEventListener('invalid', function(e){            
        var _s2Id = 's2id_'+e.target.id; //s2 autosuggest html ul li element id
        var _posS2 = $('#'+_s2Id).position();
        //get the current position of respective select2
        $('#'+_s2Id+' ul').addClass('_invalid'); //add this class with border:1px solid red;
        //this will reposition the hidden select2 just behind the actual select2 autosuggest field with z-index = -1
        $('#'+e.target.id).attr('style','display:block !important;position:absolute;z-index:-1;top:'+(_posS2.top-$('#'+_s2Id).outerHeight()-24)+'px;left:'+(_posS2.left-($('#'+_s2Id).width()/2))+'px;');
        /*
        //Adjust the left and top position accordingly 
        */
        //remove invalid class after 3 seconds
        setTimeout(function(){
            $('#'+_s2Id+' ul').removeClass('_invalid');
        },3000);            
        return true;
}, false);          
});

3

Mostrerà quel messaggio se hai un codice come questo:

<form>
  <div style="display: none;">
    <input name="test" type="text" required/>
  </div>

  <input type="submit"/>
</form>

so che è lo stesso, faccio solo un esempio, alcune persone capiscono meglio le cose con i codici: D
Robert,

3

Sì. Se un controllo modulo nascosto ha richiesto un campo, mostra questo errore. Una soluzione sarebbe disabilitare questo controllo del modulo . Questo perché di solito se si nasconde un controllo modulo è perché non si è interessati al suo valore. Pertanto, questa coppia valore nome controllo modulo non verrà inviata durante l'invio del modulo.


1
Grazie per questa idea! Mi è stato utile attivare / disattivare TUTTI gli elementi del modulo a volte nascosti indipendentemente dal fatto che siano necessari o meno i singoli, quindi la mia logica è semplice e carina :)
Gabe Kopley

3

Puoi provare .removeAttribute("required")per quegli elementi che sono nascosti al momento del caricamento della finestra. poiché è abbastanza probabile che l'elemento in questione sia contrassegnato nascosto a causa di javascript (moduli a schede)

per esempio

if(document.getElementById('hidden_field_choice_selector_parent_element'.value==true){
    document.getElementById('hidden_field').removeAttribute("required");        
}

Questo dovrebbe fare il compito.

Ha funzionato per me ... evviva


3

Un'altra possibile causa e non trattata in tutte le risposte precedenti quando si dispone di un modulo normale con campi obbligatori e si invia il modulo, quindi lo si nasconde direttamente dopo l'invio (con javascript) non dando tempo per il funzionamento della funzionalità di convalida.

La funzionalità di convalida proverà a focalizzarsi sul campo richiesto e mostrerà il messaggio di convalida dell'errore ma il campo è già stato nascosto, quindi "Un controllo modulo non valido con nome = '' non è focalizzabile." appare!

Modificare:

Per gestire questo caso è sufficiente aggiungere la seguente condizione all'interno del gestore di invio

submitHandler() {
    const form = document.body.querySelector('#formId');

    // Fix issue with html5 validation
    if (form.checkValidity && !form.checkValidity()) {
      return;
    }

    // Submit and hide form safely
  }

Modifica: spiegazione

Supponendo che stai nascondendo il modulo al momento dell'invio, questo codice garantisce che il modulo / i campi non saranno nascosti fino a quando il modulo non sarà valido. Quindi, se un campo non è valido, il browser può concentrarsi su di esso senza problemi poiché questo campo è ancora visualizzato.


3

Ci sono cose che mi sorprendono ancora ... Ho una forma con comportamento dinamico per due entità diverse. Un'entità richiede alcuni campi che l'altra no. Quindi, il mio codice JS, a seconda dell'entità, fa qualcosa del tipo: $ ('# periodo'). RemoveAttr ('richiesto'); $ ( "# Periodo-contenitore") hide ().;

e quando l'utente seleziona l'altra entità: $ ("# periodo-container"). show (); $ ('# periodo'). prop ('richiesto', vero);

Ma a volte, quando viene inviato il modulo, viene visualizzato il problema: "Un controllo modulo non valido con nome = periodo '' non è focalizzabile (sto usando lo stesso valore per l'id e il nome).

Per risolvere questo problema, devi assicurarti che l'input in cui stai impostando o rimuovendo 'richiesto' sia sempre visibile.

Quindi, quello che ho fatto è:

$("#periodo-container").show(); //for making sure it is visible
$('#periodo').removeAttr('required'); 
$("#periodo-container").hide(); //then hide

Questo ha risolto il mio problema ... incredibile.



2

Per uso angolare:

ng-required = "booleano"

Questo applicherà l'attributo html5 'richiesto' solo se il valore è vero.

<input ng-model="myCtrl.item" ng-required="myCtrl.items > 0" />

2

Sono venuto qui per rispondere che avevo innescato questo problema da solo in base alla NON chiusura del </form>tag e alla presenza di più moduli nella stessa pagina. Il primo modulo si estenderà per includere la ricerca della convalida sugli input del modulo da altrove. Poiché QUESTI moduli sono nascosti, hanno causato l'errore.

quindi ad esempio:

<form method="POST" name='register' action="#handler">


<input type="email" name="email"/>
<input type="text" name="message" />
<input type="date" name="date" />

<form method="POST" name='register' action="#register">
<input type="text" name="userId" />
<input type="password" name="password" />
<input type="password" name="confirm" />

</form>

trigger

Un controllo modulo non valido con nome = 'userId' non è attivabile.

Un controllo modulo non valido con nome = 'password' non è attivabile.

Un controllo modulo non valido con nome = 'confirm' non è focalizzabile.


2

Ci sono molti modi per risolvere questo problema

  1. Aggiungi novalidate al tuo modulo ma è totalmente sbagliato in quanto rimuoverà la convalida del modulo che porterà a informazioni errate immesse dagli utenti.

<form action="...." class="payment-details" method="post" novalidate>

  1. L'uso può rimuovere l'attributo richiesto dai campi obbligatori, che è anche sbagliato in quanto rimuoverà nuovamente la convalida del modulo.

    Invece di questo:

<input class="form-control" id="id_line1" maxlength="255" name="line1" placeholder="First line of address" type="text" required="required">

   Use this:

<input class="form-control" id="id_line1" maxlength="255" name="line1" placeholder="First line of address" type="text">

  1. L'uso può disabilitare i campi richiesti quando non si intende inviare il modulo invece di fare qualche altra opzione. Questa è la soluzione raccomandata secondo me.

    piace:

<input class="form-control" id="id_line1" maxlength="255" name="line1" placeholder="First line of address" type="text" disabled="disabled">

o disabilitarlo tramite il codice javascript / jquery dipende dal tuo scenario.


2

Ho riscontrato lo stesso problema durante l'utilizzo di Angular JS. È stato causato dall'uso richiesto insieme a ng-hide . Quando ho fatto clic sul pulsante di invio mentre questo elemento era nascosto, si è verificato l'errore Un controllo modulo non valido con nome = '' non è attivabile. finalmente!

Ad esempio, usando ng-hide insieme a richiesto:

<input type="text" ng-hide="for some condition" required something >

L'ho risolto sostituendo invece il richiesto con ng-pattern.

Ad esempio di soluzione:

<input type="text" ng-hide="for some condition" ng-pattern="some thing" >

1

Per gli altri utenti di AngularJS 1.x, questo errore è apparso perché nascondevo un controllo del modulo dalla visualizzazione anziché rimuoverlo completamente dal DOM quando non avevo bisogno del completamento del controllo.

Ho risolto questo problema usando ng-ifinvece di ng-show/ng-hide sul div contenente il controllo del modulo che richiede la convalida.

Spero che questo ti aiuti agli altri utenti del caso limite.


1

Consentitemi di affermare il mio caso poiché era diverso da tutte le soluzioni di cui sopra. Ho avuto un tag HTML che non è stato chiuso correttamente. l'elemento non required lo era, ma era incorporato in un hiddendiv

il problema nel mio caso riguardava il fatto type="datetime-local"che, per qualche ragione, era stato convalidato alla presentazione del modulo.

ho cambiato questo

<input type="datetime-local" />

in quello

<input type="text" />

1

Volevo rispondere qui perché NESSUNA di queste risposte o qualsiasi altro risultato di Google ha risolto il problema per me.

Per me non aveva nulla a che fare con i set di campi o gli input nascosti.

Ho scoperto che se avessi usato max="5"(ad esempio) avrebbe prodotto questo errore. Se avessi usato maxlength="5" ... nessun errore.

Sono stato in grado di riprodurre più volte l'errore e la cancellazione dell'errore.

Io ancora non so perché utilizzando il codice che genera l'errore, per quanto questo gli stati dovrebbe essere valida, anche senza un "min" Io credo.


Il mio è stato risolto in modo simile, ma la configurazione è stata min='-9999999999.99' max='9999999999.99'.
Ricardo Green,

0

In alternativa, un'altra risposta infallibile è utilizzare l'attributo segnaposto HTML5, quindi non sarà necessario utilizzare alcuna convalida js.

<input id="elemID" name="elemName" placeholder="Some Placeholder Text" type="hidden" required="required">

Chrome non sarà in grado di trovare elementi vuoti, nascosti e richiesti su cui concentrarsi. Soluzione semplice.

Spero che aiuti. Sono totalmente risolto con questa soluzione.


0

Sono venuto qui con lo stesso problema. Per me (iniettando elementi nascosti in base alle esigenze, ad esempio istruzione in un'app di lavoro), avevo le bandiere richieste.

Quello che ho capito è che il validatore stava sparando sull'iniezione più velocemente di quanto il documento fosse pronto, quindi si è lamentato.

Il mio tag originale richiesto ng stava usando il tag di visibilità (vm.flags.hasHighSchool).

Ho risolto creando un flag dedicato per impostare ng-richiesto = "vm.flags.highSchoolRequired == true" richiesto

Ho aggiunto un callback di 10ms sull'impostazione di quel flag e il problema è stato risolto.

 vm.hasHighSchool = function (attended) {

        vm.flags.hasHighSchool = attended;
        applicationSvc.hasHighSchool(attended, vm.application);
        setTimeout(function () {
            vm.flags.highSchoolRequired = true;;
        }, 10);
    }

html:

<input type="text" name="vm.application.highSchool.name" data-ng-model="vm.application.highSchool.name" class="form-control" placeholder="Name *" ng-required="vm.flags.highSchoolRequired == true" /></div>

La tua soluzione infatti è molto, molto rischiosa. Chiunque abbia una CPU lenta riceverà lo stesso errore. È (o sarà) la tipica condizione di razza. Probabilmente i vecchi smartphone potrebbero essere interessati. Quindi per favore sii cauto con questa soluzione.
Drachenfels,

0

Assicurarsi che tutti i controlli nel modulo con l'attributo richiesto abbiano anche l'attributo nome impostato


0

Questo errore mi è successo perché stavo inviando un modulo con campi obbligatori che non erano stati compilati.

L'errore è stato generato perché il browser stava tentando di focalizzarsi sui campi obbligatori per avvisare l'utente che i campi erano obbligatori ma quei campi obbligatori erano nascosti in una visualizzazione senza div in modo che il browser non potesse concentrarsi su di essi. Stavo inviando da una scheda visibile e i campi richiesti erano in una scheda nascosta, quindi l'errore.

Per risolvere, assicurati di controllare che i campi richiesti siano compilati.


0

È perché c'è un input nascosto con l'attributo richiesto nel modulo.

Nel mio caso, avevo una casella selezionata ed è nascosta dal tokenizer jquery usando lo stile in linea. Se non seleziono alcun token, il browser genera l'errore sopra riportato all'invio del modulo.

Quindi, l'ho risolto usando la tecnica css di seguito:

  select.download_tag{
     display: block !important;//because otherwise, its throwing error An invalid form control with name='download_tag[0][]' is not focusable.
    //So, instead set opacity
    opacity: 0;
    height: 0px;

 }

0

Ho ricevuto lo stesso errore durante la clonazione di un elemento HTML da utilizzare in un modulo.

(Ho un modulo parzialmente completo, in cui è stato inserito un modello, quindi il modello viene modificato)

L'errore si riferiva al campo originale e non alla versione clonata.

Non sono riuscito a trovare alcun metodo che costringesse il modulo a rivalutarsi (nella speranza che si sbarazzasse di qualsiasi riferimento ai vecchi campi che ora non esistono) prima di eseguire la convalida.

Per ovviare a questo problema, ho rimosso l'attributo richiesto dall'elemento originale e l'ho aggiunto dinamicamente al campo clonato prima di iniettarlo nel modulo. Il modulo ora convalida correttamente i campi clonati e modificati.

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.