当前位置: 首页 > article >正文

Chromium HTML Input 类型radio 对应c++

一、单选按钮(Radio Buttons)

<input type="radio"> 标签定义了表单的单选框选项:

<form action="">
<input type="radio" name="sex" value="male">男<br>
<input type="radio" name="sex" value="female">女
</form>

二、 radio c++接口定义:

third_party\blink\renderer\core\html\forms\radio_input_type.h

third_party\blink\renderer\core\html\forms\radio_input_type.cc

namespace blink {

class RadioInputType final : public BaseCheckableInputType {
 public:
  CORE_EXPORT static HTMLInputElement* NextRadioButtonInGroup(HTMLInputElement*,
                                                              bool forward);

  RadioInputType(HTMLInputElement& element)
      : BaseCheckableInputType(Type::kRadio, element) {}
  bool ValueMissing(const String&) const;

 private:
  void CountUsage() override;
  ControlPart AutoAppearance() const override;
  void WillUpdateCheckedness(bool new_checked) override;
  String ValueMissingText() const override;
  void HandleClickEvent(MouseEvent&) override;
  void HandleKeydownEvent(KeyboardEvent&) override;
  void HandleKeyupEvent(KeyboardEvent&) override;
  bool IsKeyboardFocusable(
      Element::UpdateBehavior update_behavior =
          Element::UpdateBehavior::kStyleAndLayout) const override;
  bool ShouldSendChangeEventAfterCheckedChanged() override;
  ClickHandlingState* WillDispatchClick() override;
  void DidDispatchClick(Event&, const ClickHandlingState&) override;
  bool ShouldAppearIndeterminate() const override;

  HTMLInputElement* FindNextFocusableRadioButtonInGroup(HTMLInputElement*,
                                                        bool);
  HTMLInputElement* CheckedRadioButtonForGroup() const;
};

template <>
struct DowncastTraits<RadioInputType> {
  static bool AllowFrom(const InputType& type) {
    return type.IsRadioInputType();
  }
};

}  // namespace blink


http://www.kler.cn/a/374018.html

相关文章:

  • 计算机网络(三)——局域网和广域网
  • 前端JavaScript中some方法的运用
  • [笔记] 使用 Jenkins 实现 CI/CD :从 GitLab 拉取 Java 项目并部署至 Windows Server
  • 51单片机——定时器中断(重点)
  • iOS - AutoreleasePool
  • 自动驾驶控制与规划——Project 6: A* Route Planning
  • 大厂面试真题-简单说说中台的架构设计
  • 如何统一管理枚举类?
  • ASPICE 4.0引领自动驾驶未来:机器学习模型的特点与实践
  • JS面试八股文(三)
  • 四足机器人实战篇之三:四足机器人嵌入式硬件设计
  • 013:无人机航线规划的概念
  • 华为OD机试真题---获得完美走位
  • 细说 ThreadPool(线程池)使用与优势以及实现方式
  • 微软官方 .NET 混淆软件 Dotfuscator
  • Nginx 网关解决 Geoserver 图层访问控制
  • idm扩展自动更新,导致不能正常使用处理方法
  • 企业应该采用和支持网络安全的几个实践
  • 高考相关 APP 案例分享
  • 【安全性分析】正式安全分析与非正式安全分析
  • 使用API有效率地管理Dynadot域名,将域名移动至某一文件夹中
  • 【瑞吉外卖】-day03
  • Qt 实战(10)模型视图 | 10.5、代理
  • 音视频入门基础:FLV专题(21)——FFmpeg源码中,获取FLV文件音频信息的实现(上)
  • 组件封装思路
  • JDBC——获取DBMS连接、优化与工具类封装