Qual è la differenza tra richiesto e richiesto?


Risposte:


421

Gli elementi del modulo AngularJS cercano l' requiredattributo per eseguire le funzioni di convalida. ng-requiredti consente di impostare l' requiredattributo in base a un test booleano (ad esempio, richiede solo il campo B - ad esempio un numero di studente - se il campo A ha un certo valore - se hai selezionato "studente" come scelta )

Ad esempio, <input required>e <input ng-required="true">sono essenzialmente la stessa cosa

Se ti stai chiedendo perché sia così (e non solo make <input required="true">o <input required="false">), è dovuto alle limitazioni dell'HTML - l' requiredattributo non ha alcun valore associato - la sua semplice presenza significa (secondo gli standard HTML) che l'elemento è richiesto - quindi angolare ha bisogno di un modo per impostare / disinserire il valore richiesto ( required="false"sarebbe HTML non valido)


Come posso rimuovere rispettivamente ng-richiesto? Perché ho provato alcuni metodi jquery senza successo
themhz,

28
Non sono sicuro di aver capito la domanda. In pratica, non usi mai ng-richiesto = "vero", ma piuttosto ng-richiesto = "scopedVariable" o ng-richiesto = "scopeTruthTest ()", e il valore del variabile / funzione determina se l'elemento è richiesto. Non usare mai jquery per scherzare con queste cose in un'app angolare, altrimenti otterrai risultati imprevedibili!
Tiago Roldão,

Vale la pena ricordare che ng-richiesto visualizza un messaggio di errore di tipo tooltip predefinito che dice "questo campo è obbligatorio", che non è sempre desiderato. Sto cercando un modo per spegnerlo
Adam Spence,

2
In realtà no. Non sono sicuro, ma penso che ciò a cui ti riferisci sia la convalida html5, che è preformata automaticamente dalla maggior parte dei browser moderni. Se si vuole prendere il controllo di questo (disabilitando quello che fa il browser) è possibile aggiungere il novalidate attributi: <form method="post" action="/foo" novalidate>. Ancora una volta, questo è un attributo html5, non correlato a angularJS.
Tiago Roldão,

Mi sarei aspettato che quando ng-requiredpunta a una variabile ambito / controller, Angular lo controlla per le modifiche e imposta l'attributo richiesto di conseguenza. Mentre nel caso del semplice requiredattributo HTML non hai quel tipo di flessibilità. No? E mentre siamo sullo stesso argomento, che dire ng-attr-required? È esattamente lo stesso di ng-required?
AsGoodAsIt Ottiene il

78

Vorrei fare un addon per la risposta di Tiago :

Supponiamo che stai nascondendo l'elemento usando ng-showe aggiungendo un requiredattributo sullo stesso:

<div ng-show="false">
    <input required name="something" ng-model="name"/>
</div>

genererà un errore simile a:

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

Questo perché non è possibile imporre la requiredconvalida sugli hiddenelementi. L'utilizzo ng-requiredsemplifica l' applicazione condizionale della convalida richiesta, il che è semplicemente fantastico !!


13
Sicuramente un buon consiglio, e puoi anche usare ng-ifinvece di ng-show/ ng-hideper eludere quel potenziale problema.
jkjustjoshing,

1
Questa dovrebbe essere la risposta accettata. Se hai elementi nascosti (ng-show = "false"), c'è una differenza tra ng-required = "true" e solo "richiesto" come descritto in questa risposta, e siamo entrati in acqua calda a causa di questa differenza.
Ivan Krivyakov,

17

L' attributo HTML required="required" è una dichiarazione che indica al browser che questo campo è obbligatorio per rendere valido il modulo. ( required="required"è il modulo XHTML, solo usando requiredè equivalente)

L' attributo Angular ng-required="yourCondition" significa 'isRequired (yourCondition)' e imposta l'attributo HTML dinamicamente per te a seconda delle tue condizioni.

Si noti inoltre che la versione HTML è fonte di confusione , è non è possibile scrivere qualcosa di simile condizionale required="true"o required="false", solo la presenza delle materie degli attributi (mezzi presenti vero)! Qui è dove Angular ti aiuta ng-required.


Sì, purtroppo, il browser non consente di inserire vero / falso, probabilmente considerato troppo tecnico ...
Christophe Roussy,
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.