Modèle:
[Display(Name = "City"]
[Required]
[RegularExpression(@"^(?!\d$).*$"]
[StringLength(20,MinimumLength = 2]
public string City { get; set; }
Forme:
@Html.LabelFor(x => x.City, new { @class = "control-label" })
@Html.TextBoxFor(x => x.City, new {id="city" })
Scénario:
<script>
$(document).ready(function () {
$("#identificationForm").submit(function (e) {
var required=document.getElementById("city").required;
console.log(required);
// e.preventDefault();
});
});
</script>
Je veux supprimer la propriété requise si une condition est remplie.Unable de le faire de cette façon.Comment puis-je y parvenir?
JavaScript est sensible à la casse.
Utilisation
document.getElementById("city").required = false;
Veillez à ce que votre code ne fonctionne pas lorsque vous essayez d'accéder à l'élément avant qu'il n'existe. Placez votre script après l'élément si vous n'exécutez pas le code sur un événement:
<input type="text" id="city" required>
<script>
if(somecondition is true){
document.getElementById("city").required = false;
}
</script>
Notez également que vous ne pouvez pas modifier cela dans une fonction d'envoi et que votre formulaire doit être soumis car il est trop tard: ce gestionnaire d'événements ne sera pas appelé si le champ requis n'est pas renseigné!
Vous pouvez utiliser:
document.getElementById("city").removeAttribute("required");
ou avec jQuery
$('#city').removeAttr('required')
Vous devriez faire ceci:
if(somecondition is true)
{
var city = document.getElementById("city");
city.removeAttribute('required');
}
En php c'est très facile, cela ne validera pas votre formulaire lors de la soumission,
<input type="submit" onclick="return confirm('Are you sure?')" value="Abort Test" formnovalidate>
Au moment où la fonction On Submit
doit supprimer l'attribut requis, le formulaire aurait déjà passé la validation. Les étapes sont d'abord que vous devez désactiver la validation, vous pourrez alors soumettre le formulaire avec les champs requis vides. Ensuite, supprimez les attributs requis et appelez enfin manuellement la validation via $.validator.unubtrusive.parse(form)
. Le formulaire sera alors validé en appelant les autres types de validation tels que string length
et formatting
, tout le reste sauf les attributs requis. Vérifiez if form.valid() then submit() else
ne faites rien.
Si vous placez vos champs de texte dans un formulaire, il est possible de remplacer le champ requis par un attribut spécial appelé novalidate. C'est la syntaxe: <form novalidate> .. </form>
Voici un exemple:
<form novalidate>
Zip code: <input type="text" name="zipcode" pattern="[0-9]{5}" required><br/>
<input type="submit">
</form>
L'attribut novalidate Voici un lien avec deux démonstrations en direct utilisant l'attribut novalidate.
Vous ne savez pas encore si quelqu'un a trouvé une meilleure façon de le faire et ce n'est peut-être pas le moyen le plus efficace, mais vous pouvez utiliser PHP pour y parvenir. Si la condition que vous souhaitez remplir est connue avant le chargement de la page, vous pouvez obtenir ceci:
<input type="text" id="city"
<?php
if (condition_is_met) {
echo ">";
} else {
echo "required>";
}
?>