Is het mogelijk om formuliervelden uit te schakelen met CSS? Ik weet natuurlijk van het attribuut disabled, maar is het mogelijk om dit in een CSS regel te specificeren? Zoiets als -
<input type="text" name="username" value="admin" >
<style type="text/css">
input[name=username] {
disabled: true; /* Does not work */
}
</style>
De reden waarom ik dit vraag is dat ik een applicatie heb waar de velden in het formulier automatisch worden gegenereerd, en velden worden verborgen/weergegeven op basis van een aantal regels (die in Javascript worden uitgevoerd). Nu wil ik het uitbreiden om het uitschakelen/uitschakelen van velden te ondersteunen, maar de manier waarop de regels zijn geschreven om rechtstreeks de stijleigenschappen van de formuliervelden te manipuleren. Dus nu moet ik de rule engine uitbreiden om zowel attributen als de stijl van formuliervelden te veranderen en op een of andere manier lijkt dat minder dan ideaal.
Het is heel merkwaardig dat je visible en display properties in CSS hebt, maar geen enable/disable. Is er iets dergelijks in de nog in de maak zijnde HTML5 standaard, of zelfs iets niet-standaards (browser-specifiek)?
Aangezien de regels worden uitgevoerd in JavaScript, waarom ze niet uitschakelen met behulp van javascript (of in mijn voorbeelden, jQuery)?
$('#fieldId').attr('disabled', 'disabled'); //Disable
$('#fieldId').removeAttr('disabled'); //Enable
UPDATE
De attr
functie is niet langer de primaire aanpak hiervoor, zoals werd opgemerkt in de opmerkingen hieronder. Dit wordt nu gedaan met de prop
functie.
$( "input" ).prop( "disabled", true ); //Disable
$( "input" ).prop( "disabled", false ); //Enable
Het's zeer merkwaardig dat je visible en display eigenschappen hebt in CSS maar niet enable/disable.
Het's zeer merkwaardig dat je denkt dat's zeer merkwaardig. Je begrijpt het doel van CSS niet. CSS is niet bedoeld om het gedrag van vormelementen te veranderen. Het'is alleen bedoeld om hun stijl te veranderen. Het verbergen van een tekstveld betekent niet dat het tekstveld er niet meer is of dat de browser zijn gegevens niet zal verzenden wanneer u het formulier verzendt. Het verbergt het alleen voor de ogen van de gebruiker's.
Om uw velden daadwerkelijk uit te schakelen, moet u **het disabled
attribuut in HTML of de disabled
DOM eigenschap in JavaScript gebruiken.