HtmlButtonElement
sealed class HtmlButtonElement : HtmlFormControlElement, IHtmlButtonElement, IHtmlElement, IElement, INode, IEventTarget, IMarkupFormattable, IParentNode, IChildNode, INonDocumentTypeChildNode, IElementCssInlineStyle, IGlobalEventHandlers, IValidation
Represents an HTML button element.
using AngleSharp.Dom.Css;
using AngleSharp.Dom.Events;
using AngleSharp.Extensions;
using AngleSharp.Html;
namespace AngleSharp.Dom.Html
{
internal sealed class HtmlButtonElement : HtmlFormControlElement, IHtmlButtonElement, IHtmlElement, IElement, INode, IEventTarget, IMarkupFormattable, IParentNode, IChildNode, INonDocumentTypeChildNode, IElementCssInlineStyle, IGlobalEventHandlers, IValidation
{
public string Type {
get {
return (this.GetOwnAttribute(AttributeNames.Type) ?? InputTypeNames.Submit).ToLowerInvariant();
}
set {
this.SetOwnAttribute(AttributeNames.Type, value, false);
}
}
public string FormAction {
get {
IHtmlFormElement form = base.Form;
if (form == null)
return string.Empty;
return form.Action;
}
set {
IHtmlFormElement form = base.Form;
if (form != null)
form.Action = value;
}
}
public string FormEncType {
get {
IHtmlFormElement form = base.Form;
if (form == null)
return string.Empty;
return form.Enctype;
}
set {
IHtmlFormElement form = base.Form;
if (form != null)
form.Enctype = value;
}
}
public string FormMethod {
get {
IHtmlFormElement form = base.Form;
if (form == null)
return string.Empty;
return form.Method;
}
set {
IHtmlFormElement form = base.Form;
if (form != null)
form.Method = value;
}
}
public bool FormNoValidate {
get {
return base.Form?.NoValidate ?? false;
}
set {
IHtmlFormElement form = base.Form;
if (form != null)
form.NoValidate = value;
}
}
public string FormTarget {
get {
IHtmlFormElement form = base.Form;
if (form == null)
return string.Empty;
return form.Target;
}
set {
IHtmlFormElement form = base.Form;
if (form != null)
form.Target = value;
}
}
public string Value {
get {
return this.GetOwnAttribute(AttributeNames.Value) ?? string.Empty;
}
set {
this.SetOwnAttribute(AttributeNames.Value, value, false);
}
}
internal bool IsVisited { get; set; }
internal bool IsActive { get; set; }
public HtmlButtonElement(Document owner, string prefix = null)
: base(owner, TagNames.Button, prefix, NodeFlags.None)
{
}
public override void DoClick()
{
IHtmlFormElement form = base.Form;
if (!IsClickedCancelled() && form != null) {
string type = Type;
if (type.Is(InputTypeNames.Submit))
form.SubmitAsync(this);
else if (type.Is(InputTypeNames.Reset)) {
form.Reset();
}
}
}
protected override bool CanBeValidated()
{
if (Type.Is(InputTypeNames.Submit))
return !this.HasDataListAncestor();
return false;
}
internal override void ConstructDataSet(FormDataSet dataSet, IHtmlElement submitter)
{
string type = Type;
if (this == submitter && type.IsOneOf(InputTypeNames.Submit, InputTypeNames.Reset))
dataSet.Append(base.Name, Value, type);
}
}
}