HTMLFormControlElement
Represents the base class for all HTML form control elements.
using AngleSharp.DOM.Collections;
namespace AngleSharp.DOM.Html
{
public abstract class HTMLFormControlElement : HTMLElement, ILabelabelElement, IValidation
{
private NodeList _labels;
private ValidityState _vstate;
private string _error;
[DOM("name")]
public string Name {
get {
return GetAttribute("name");
}
set {
SetAttribute("name", value);
}
}
[DOM("form")]
public HTMLFormElement Form {
get {
return GetAssignedForm();
}
}
[DOM("disabled")]
public bool Disabled {
get {
return GetAttribute("disabled") != null;
}
set {
SetAttribute("disabled", value ? string.Empty : null);
}
}
[DOM("autofocus")]
public bool Autofocus {
get {
return GetAttribute("autofocus") != null;
}
set {
SetAttribute("autofocus", value ? string.Empty : null);
}
}
[DOM("supportsLabels")]
public bool SupportsLabels { get; set; }
[DOM("labels")]
public NodeList Labels {
get {
return _labels;
}
}
[DOM("validationMessage")]
public string ValidationMessage {
get {
if (!_vstate.CustomError)
return string.Empty;
return _error;
}
}
[DOM("willValidate")]
public bool WillValidate { get; set; }
[DOM("validity")]
public ValidityState Validity {
get {
return _vstate;
}
}
internal HTMLFormControlElement()
{
_vstate = new ValidityState();
_labels = new NodeList();
}
[DOM("checkValidity")]
public bool CheckValidity()
{
Check(_vstate);
return _vstate.Valid;
}
[DOM("setCustomValidity")]
public void SetCustomValidity(string error)
{
_vstate.CustomError = !string.IsNullOrEmpty(error);
_error = error;
}
internal virtual void ConstructDataSet(FormDataSet dataSet, HTMLElement submitter)
{
}
internal virtual void Reset()
{
}
protected virtual void Check(ValidityState state)
{
}
}
}