public static FormValue FromSelect(ElementWrapper select, FormValue formValue) { var options = select.FindAll("option"); var texts = new List <string>(); var values = new List <string>(); foreach (var option in options) { var text = option.TextContent; var value = option.HasAttribute("value") ? option.Attribute("value") : text; texts.Add(text); values.Add(value); if (option.HasAttribute("selected")) { formValue.SetValue(value); } } formValue.SetConfinedValues(values, texts); return(formValue); }
public static FormValue FromMultipleElements(string name, IList <ElementWrapper> elements) { var enabledElements = elements .Where(e => !e.HasAttribute("disabled")) .ToList(); if (enabledElements.Count == 0) { return(null); } if (enabledElements.Count == 1) { return(FromElement(enabledElements.Single())); } var checkedValues = enabledElements.Where(e => e.HasAttribute("checked")).ToList(); var formValue = new FormValue(name) .SetConfinedValues(enabledElements.Select(e => e.Attribute("value")).ToList()); if (checkedValues.Count > 0) { formValue.SetValue(string.Join(",", checkedValues.Select(e => e.Attribute("value")))); } return(formValue); }
public static FormValue FromTextArea(ElementWrapper textArea, FormValue formValue) { formValue .SetValue(textArea.TextContent) .SetReadonly(textArea.HasAttribute("readonly")); return(formValue); }
public static FormValue FromInput(ElementWrapper input, FormValue formValue) { var type = input.HasAttribute("type") ? input.Attribute("type").ToLower() : "text"; formValue .SetValue(input.HasAttribute("value") ? input.Attribute("value") : null) .SetReadonly(input.HasAttribute("readonly")); if (type == "checkbox" || type == "radio") { if (string.IsNullOrEmpty(formValue.Value)) { formValue.SetValue("on"); } if (!input.HasAttribute("checked")) { formValue.SetSend(false); } } return(formValue); }