本文整理汇总了C++中HTMLFormControlElement::focus方法的典型用法代码示例。如果您正苦于以下问题:C++ HTMLFormControlElement::focus方法的具体用法?C++ HTMLFormControlElement::focus怎么用?C++ HTMLFormControlElement::focus使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HTMLFormControlElement
的用法示例。
在下文中一共展示了HTMLFormControlElement::focus方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: validateInteractively
bool HTMLFormElement::validateInteractively(Event* event)
{
ASSERT(event);
if (!document()->page() || !document()->page()->settings()->interactiveFormValidationEnabled() || noValidate())
return true;
HTMLFormControlElement* submitElement = submitElementFromEvent(event);
if (submitElement && submitElement->formNoValidate())
return true;
Vector<RefPtr<HTMLFormControlElement> > unhandledInvalidControls;
collectUnhandledInvalidControls(unhandledInvalidControls);
if (unhandledInvalidControls.isEmpty())
return true;
// If the form has invalid controls, abort submission.
RefPtr<HTMLFormElement> protector(this);
// Focus on the first focusable control.
for (unsigned i = 0; i < unhandledInvalidControls.size(); ++i) {
HTMLFormControlElement* unhandled = unhandledInvalidControls[i].get();
if (unhandled->isFocusable() && unhandled->inDocument()) {
RefPtr<Document> originalDocument(unhandled->document());
unhandled->scrollIntoViewIfNeeded(false);
// scrollIntoViewIfNeeded() dispatches events, so the state
// of 'unhandled' might be changed so it's no longer focusable or
// moved to another document.
if (unhandled->isFocusable() && unhandled->inDocument() && originalDocument == unhandled->document()) {
unhandled->focus();
break;
}
}
}
// Warn about all of unfocusable controls.
if (Frame* frame = document()->frame()) {
for (unsigned i = 0; i < unhandledInvalidControls.size(); ++i) {
HTMLFormControlElement* unhandled = unhandledInvalidControls[i].get();
if (unhandled->isFocusable() && unhandled->inDocument())
continue;
String message("An invalid form control with name='%name' is not focusable.");
message.replace("%name", unhandled->name());
frame->domWindow()->console()->addMessage(HTMLMessageSource, LogMessageType, ErrorMessageLevel, message, 0, document()->url().string());
}
}
m_insubmit = false;
return false;
}
示例2: runAutofocus
static void runAutofocus(HTMLDialogElement* dialog)
{
Node* next = 0;
for (Node* node = dialog->firstChild(); node; node = next) {
if (node->isElementNode() && toElement(node)->isFormControlElement()) {
HTMLFormControlElement* control = toHTMLFormControlElement(node);
if (control->isAutofocusable()) {
control->focus();
control->setAutofocused();
return;
}
}
if (node->hasTagName(dialogTag))
next = NodeTraversal::nextSkippingChildren(node, dialog);
else
next = NodeTraversal::next(node, dialog);
}
}
示例3: setFocusForModalDialog
// This function chooses the focused element when showModal() is invoked, as described in the spec for showModal().
static void setFocusForModalDialog(HTMLDialogElement* dialog)
{
Element* focusableDescendant = 0;
Node* next = 0;
for (Node* node = dialog->firstChild(); node; node = next) {
if (node->hasTagName(dialogTag))
next = NodeTraversal::nextSkippingChildren(*node, dialog);
else
next = NodeTraversal::next(*node, dialog);
if (!node->isElementNode())
continue;
Element* element = toElement(node);
if (element->isFormControlElement()) {
HTMLFormControlElement* control = toHTMLFormControlElement(node);
if (control->isAutofocusable()) {
control->focus();
return;
}
}
if (!focusableDescendant && element->isFocusable())
focusableDescendant = element;
}
if (focusableDescendant) {
focusableDescendant->focus();
return;
}
if (dialog->isFocusable()) {
dialog->focus();
return;
}
dialog->document().setFocusedElement(0);
}