diff --git a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp index 7c397dcd68..a00b5d6a83 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp @@ -371,11 +371,13 @@ String HTMLInputElement::value() const WebIDL::ExceptionOr HTMLInputElement::set_value(String const& value) { + auto& realm = this->realm(); + // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-filename if (type_state() == TypeAttributeState::FileUpload) { // On setting, if the new value is the empty string, empty the list of selected files; otherwise, throw an "InvalidStateError" DOMException. if (!value.is_empty()) - return WebIDL::InvalidStateError::create(realm(), "Setting value of input type file to non-empty string"_fly_string); + return WebIDL::InvalidStateError::create(realm, "Setting value of input type file to non-empty string"_fly_string); m_selected_files = nullptr; return {}; } @@ -401,6 +403,9 @@ WebIDL::ExceptionOr HTMLInputElement::set_value(String const& value) if (m_text_node && (m_value != old_value)) { m_text_node->set_data(m_value); update_placeholder_visibility(); + + if (auto* browsing_context = document().browsing_context()) + browsing_context->set_cursor_position(DOM::Position::create(realm, *m_text_node, m_text_node->data().bytes().size())); } return {};