CINXE.COM
Mi primer formulario HTML - Aprende desarrollo web | MDN
<!doctype html><html lang="en-US" prefix="og: https://ogp.me/ns#"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="https://developer.mozilla.org/favicon-48x48.bc390275e955dacb2e65.png"/><link rel="apple-touch-icon" href="https://developer.mozilla.org/apple-touch-icon.528534bba673c38049c2.png"/><meta name="theme-color" content="#ffffff"/><link rel="manifest" href="https://developer.mozilla.org/manifest.f42880861b394dd4dc9b.json"/><link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="MDN Web Docs"/><title>Mi primer formulario HTML - Aprende desarrollo web | MDN</title><link rel="alternate" title="Your first form" href="https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form" hrefLang="en"/><link rel="alternate" title="Ihr erstes Formular" href="https://developer.mozilla.org/de/docs/Learn_web_development/Extensions/Forms/Your_first_form" hrefLang="de"/><link rel="alternate" title="Mon premier formulaire HTML" href="https://developer.mozilla.org/fr/docs/Learn_web_development/Extensions/Forms/Your_first_form" hrefLang="fr"/><link rel="alternate" title="初めてのフォーム" href="https://developer.mozilla.org/ja/docs/Learn_web_development/Extensions/Forms/Your_first_form" hrefLang="ja"/><link rel="alternate" title="당신의 첫 HTML 폼" href="https://developer.mozilla.org/ko/docs/Learn_web_development/Extensions/Forms/Your_first_form" hrefLang="ko"/><link rel="alternate" title="Meu primeiro formulário HTML" href="https://developer.mozilla.org/pt-BR/docs/Learn_web_development/Extensions/Forms/Your_first_form" hrefLang="pt"/><link rel="alternate" title="创建我的第一个表单" href="https://developer.mozilla.org/zh-CN/docs/Learn_web_development/Extensions/Forms/Your_first_form" hrefLang="zh"/><link rel="alternate" title="Mi primer formulario HTML" href="https://developer.mozilla.org/es/docs/Learn_web_development/Extensions/Forms/Your_first_form" hrefLang="es"/><link rel="preload" as="font" type="font/woff2" href="/static/media/Inter.var.c2fe3cb2b7c746f7966a.woff2" crossorigin=""/><link rel="alternate" type="application/rss+xml" title="MDN Blog RSS Feed" href="https://developer.mozilla.org/en-US/blog/rss.xml" hrefLang="en"/><meta name="description" content="El primer artículo de nuestra serie te proporciona una primera experiencia de creación de un formulario web, que incluye diseñar un formulario sencillo con controles de formulario adecuados y otros elementos HTML, añadir un poco de estilo muy simple con CSS y describir cómo se envían los datos a un servidor. Ampliaremos cada uno de estos subtemas más adelante."/><meta property="og:url" content="https://developer.mozilla.org/es/docs/Learn_web_development/Extensions/Forms/Your_first_form"/><meta property="og:title" content="Mi primer formulario HTML - Aprende desarrollo web | MDN"/><meta property="og:type" content="website"/><meta property="og:locale" content="es"/><meta property="og:description" content="El primer artículo de nuestra serie te proporciona una primera experiencia de creación de un formulario web, que incluye diseñar un formulario sencillo con controles de formulario adecuados y otros elementos HTML, añadir un poco de estilo muy simple con CSS y describir cómo se envían los datos a un servidor. Ampliaremos cada uno de estos subtemas más adelante."/><meta property="og:image" content="https://developer.mozilla.org/mdn-social-share.d893525a4fb5fb1f67a2.png"/><meta property="og:image:type" content="image/png"/><meta property="og:image:height" content="1080"/><meta property="og:image:width" content="1920"/><meta property="og:image:alt" content="The MDN Web Docs logo, featuring a blue accent color, displayed on a solid black background."/><meta property="og:site_name" content="MDN Web Docs"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="MozDevNet"/><link rel="canonical" href="https://developer.mozilla.org/es/docs/Learn_web_development/Extensions/Forms/Your_first_form"/><style media="print">.article-actions-container,.document-toc-container,.language-menu,.main-menu-toggle,.on-github,.page-footer,.place,.sidebar,.top-banner,.top-navigation-main,ul.prev-next{display:none!important}.main-page-content,.main-page-content pre{padding:2px}.main-page-content pre{border-left-width:2px}</style><script src="/static/js/gtag.js" defer=""></script><script defer="" src="/static/js/main.f565372a.js"></script><link href="/static/css/main.3d9e7a02.css" rel="stylesheet"/></head><body><script>if(document.body.addEventListener("load",(t=>{t.target.classList.contains("interactive")&&t.target.setAttribute("data-readystate","complete")}),{capture:!0}),window&&document.documentElement){const t={light:"#ffffff",dark:"#1b1b1b"};try{const e=window.localStorage.getItem("theme");e&&(document.documentElement.className=e,document.documentElement.style.backgroundColor=t[e]);const o=window.localStorage.getItem("nop");o&&(document.documentElement.dataset.nop=o)}catch(t){console.warn("Unable to read theme from localStorage",t)}}</script><div id="root"><ul id="nav-access" class="a11y-nav"><li><a id="skip-main" href="#content">Skip to main content</a></li><li><a id="skip-search" href="#top-nav-search-input">Skip to search</a></li><li><a id="skip-select-language" href="#languages-switcher-button">Skip to select language</a></li></ul><div class="page-wrapper category-api document-page"><div class="top-banner loading"><section class="place top container"></section></div><div class="sticky-header-container"><header class="top-navigation "><div class="container "><div class="top-navigation-wrap"><a href="/es/" class="logo" aria-label="MDN homepage"><svg id="mdn-docs-logo" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 694.9 104.4" style="enable-background:new 0 0 694.9 104.4" xml:space="preserve" role="img"><title>MDN Web Docs</title><path d="M40.3 0 11.7 92.1H0L28.5 0h11.8zm10.4 0v92.1H40.3V0h10.4zM91 0 62.5 92.1H50.8L79.3 0H91zm10.4 0v92.1H91V0h10.4z" class="logo-m"></path><path d="M627.9 95.6h67v8.8h-67v-8.8z" class="logo-_"></path><path d="M367 42h-4l-10.7 30.8h-5.5l-10.8-26h-.4l-10.5 26h-5.2L308.7 42h-3.8v-5.6H323V42h-6.5l6.8 20.4h.4l10.3-26h4.7l11.2 26h.5l5.7-20.3h-6.2v-5.6H367V42zm34.9 20c-.4 3.2-2 5.9-4.7 8.2-2.8 2.3-6.5 3.4-11.3 3.4-5.4 0-9.7-1.6-13.1-4.7-3.3-3.2-5-7.7-5-13.7 0-5.7 1.6-10.3 4.7-14s7.4-5.5 12.9-5.5c5.1 0 9.1 1.6 11.9 4.7s4.3 6.9 4.3 11.3c0 1.5-.2 3-.5 4.7h-25.6c.3 7.7 4 11.6 10.9 11.6 2.9 0 5.1-.7 6.5-2 1.5-1.4 2.5-3 3-4.9l6 .9zM394 51.3c.2-2.4-.4-4.7-1.8-6.9s-3.8-3.3-7-3.3c-3.1 0-5.3 1-6.9 3-1.5 2-2.5 4.4-2.8 7.2H394zm51 2.4c0 5-1.3 9.5-4 13.7s-6.9 6.2-12.7 6.2c-6 0-10.3-2.2-12.7-6.7-.1.4-.2 1.4-.4 2.9s-.3 2.5-.4 2.9h-7.3c.3-1.7.6-3.5.8-5.3.3-1.8.4-3.7.4-5.5V22.3h-6v-5.6H416v27c1.1-2.2 2.7-4.1 4.7-5.7 2-1.6 4.8-2.4 8.4-2.4 4.6 0 8.4 1.6 11.4 4.7 3 3.2 4.5 7.6 4.5 13.4zm-7.7.6c0-4.2-1-7.4-3-9.5-2-2.2-4.4-3.3-7.4-3.3-3.4 0-6 1.2-8 3.7-1.9 2.4-2.9 5-3 7.7V57c0 3 1 5.6 3 7.7s4.5 3.1 7.6 3.1c3.6 0 6.3-1.3 8.1-3.9 1.8-2.7 2.7-5.9 2.7-9.6zm69.2 18.5h-13.2v-7.2c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2 5.7 0 9.8 2.2 12.3 6.5V22.3h-8.6v-5.6h15.8v50.6h6v5.5zM493.2 56v-4.4c-.1-3-1.2-5.5-3.2-7.3s-4.4-2.8-7.2-2.8c-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zm53.1-1.4c0 5.6-1.8 10.2-5.3 13.7s-8.2 5.3-13.9 5.3-10.1-1.7-13.4-5.1c-3.3-3.4-5-7.9-5-13.5 0-5.3 1.6-9.9 4.7-13.7 3.2-3.8 7.9-5.7 14.2-5.7s11 1.9 14.1 5.7c3 3.7 4.6 8.1 4.6 13.3zm-7.7-.2c0-4-1-7.2-3-9.5s-4.8-3.5-8.2-3.5c-3.6 0-6.4 1.2-8.3 3.7s-2.9 5.6-2.9 9.5c0 3.7.9 6.8 2.8 9.4 1.9 2.6 4.6 3.9 8.3 3.9 3.6 0 6.4-1.3 8.4-3.8 1.9-2.6 2.9-5.8 2.9-9.7zm45 5.8c-.4 3.2-1.9 6.3-4.4 9.1-2.5 2.9-6.4 4.3-11.8 4.3-5.2 0-9.4-1.6-12.6-4.8-3.2-3.2-4.8-7.7-4.8-13.7 0-5.5 1.6-10.1 4.7-13.9 3.2-3.8 7.6-5.7 13.2-5.7 2.3 0 4.6.3 6.7.8 2.2.5 4.2 1.5 6.2 2.9l1.5 9.5-5.9.7-1.3-6.1c-2.1-1.2-4.5-1.8-7.2-1.8-3.5 0-6.1 1.2-7.7 3.7-1.7 2.5-2.5 5.7-2.5 9.6 0 4.1.9 7.3 2.7 9.5 1.8 2.3 4.4 3.4 7.8 3.4 5.2 0 8.2-2.9 9.2-8.8l6.2 1.3zm34.7 1.9c0 3.6-1.5 6.5-4.6 8.5s-7 3-11.7 3c-5.7 0-10.6-1.2-14.6-3.6l1.2-8.8 5.7.6-.2 4.7c1.1.5 2.3.9 3.6 1.1s2.6.3 3.9.3c2.4 0 4.5-.4 6.5-1.3 1.9-.9 2.9-2.2 2.9-4.1 0-1.8-.8-3.1-2.3-3.8s-3.5-1.3-5.8-1.7-4.6-.9-6.9-1.4c-2.3-.6-4.2-1.6-5.7-2.9-1.6-1.4-2.3-3.5-2.3-6.3 0-4.1 1.5-6.9 4.6-8.5s6.4-2.4 9.9-2.4c2.6 0 5 .3 7.2.9 2.2.6 4.3 1.4 6.1 2.4l.8 8.8-5.8.7-.8-5.7c-2.3-1-4.7-1.6-7.2-1.6-2.1 0-3.7.4-5.1 1.1-1.3.8-2 2-2 3.8 0 1.7.8 2.9 2.3 3.6 1.5.7 3.4 1.2 5.7 1.6 2.2.4 4.5.8 6.7 1.4 2.2.6 4.1 1.6 5.7 3 1.4 1.6 2.2 3.7 2.2 6.6zM197.6 73.2h-17.1v-5.5h3.8V51.9c0-3.7-.7-6.3-2.1-7.9-1.4-1.6-3.3-2.3-5.7-2.3-3.2 0-5.6 1.1-7.2 3.4s-2.4 4.6-2.5 6.9v15.6h6v5.5h-17.1v-5.5h3.8V51.9c0-3.8-.7-6.4-2.1-7.9-1.4-1.5-3.3-2.3-5.6-2.3-3.2 0-5.5 1.1-7.2 3.3-1.6 2.2-2.4 4.5-2.5 6.9v15.8h6.9v5.5h-20.2v-5.5h6V42.4h-6.1v-5.6h13.4v6.4c1.2-2.1 2.7-3.8 4.7-5.2 2-1.3 4.4-2 7.3-2s5.3.7 7.5 2.1c2.2 1.4 3.7 3.5 4.5 6.4 1.1-2.5 2.7-4.5 4.9-6.1s4.8-2.4 7.9-2.4c3.5 0 6.5 1.1 8.9 3.3s3.7 5.6 3.7 10.2v18.2h6.1v5.5zm42.5 0h-13.2V66c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2s9.8 2.2 12.3 6.5V22.7h-8.6v-5.6h15.8v50.6h6v5.5zm-13.3-16.8V52c-.1-3-1.2-5.5-3.2-7.3s-4.4-2.8-7.2-2.8c-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zm61.5 16.8H269v-5.5h6V51.9c0-3.7-.7-6.3-2.2-7.9-1.4-1.6-3.4-2.3-5.7-2.3-3.1 0-5.6 1-7.4 3s-2.8 4.4-2.9 7v15.9h6v5.5h-19.3v-5.5h6V42.4h-6.2v-5.6h13.6V43c2.6-4.6 6.8-6.9 12.7-6.9 3.6 0 6.7 1.1 9.2 3.3s3.7 5.6 3.7 10.2v18.2h6v5.4h-.2z" class="logo-text"></path></svg></a><button title="Open main menu" type="button" class="button action has-icon main-menu-toggle" aria-haspopup="menu" aria-label="Open main menu" aria-expanded="false"><span class="button-wrap"><span class="icon icon-menu "></span><span class="visually-hidden">Open main menu</span></span></button></div><div class="top-navigation-main"><nav class="main-nav" aria-label="Main menu"><ul class="main-menu nojs"><li class="top-level-entry-container "><button type="button" id="references-button" class="top-level-entry menu-toggle" aria-controls="references-menu" aria-expanded="false">References</button><a href="/es/docs/Web" class="top-level-entry">References</a><ul id="references-menu" class="submenu references hidden inline-submenu-lg" aria-labelledby="references-button"><li class="apis-link-container mobile-only "><a href="/es/docs/Web" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview / Web Technology</div><p class="submenu-item-description">Web technology reference for developers</p></div></a></li><li class="html-link-container "><a href="/es/docs/Web/HTML" class="submenu-item "><div class="submenu-icon html"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTML</div><p class="submenu-item-description">Structure of content on the web</p></div></a></li><li class="css-link-container "><a href="/es/docs/Web/CSS" class="submenu-item "><div class="submenu-icon css"></div><div class="submenu-content-container"><div class="submenu-item-heading">CSS</div><p class="submenu-item-description">Code used to describe document style</p></div></a></li><li class="javascript-link-container "><a href="/es/docs/Web/JavaScript" class="submenu-item "><div class="submenu-icon javascript"></div><div class="submenu-content-container"><div class="submenu-item-heading">JavaScript</div><p class="submenu-item-description">General-purpose scripting language</p></div></a></li><li class="http-link-container "><a href="/es/docs/Web/HTTP" class="submenu-item "><div class="submenu-icon http"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTTP</div><p class="submenu-item-description">Protocol for transmitting web resources</p></div></a></li><li class="apis-link-container "><a href="/es/docs/Web/API" class="submenu-item "><div class="submenu-icon apis"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web APIs</div><p class="submenu-item-description">Interfaces for building web applications</p></div></a></li><li class="apis-link-container "><a href="/es/docs/Mozilla/Add-ons/WebExtensions" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web Extensions</div><p class="submenu-item-description">Developing extensions for web browsers</p></div></a></li><li class=" "><a href="/es/docs/Web/Accessibility" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Accessibility</div><p class="submenu-item-description">Build web projects usable for all</p></div></a></li><li class="apis-link-container desktop-only "><a href="/es/docs/Web" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web Technology</div><p class="submenu-item-description">Web technology reference for developers</p></div></a></li></ul></li><li class="top-level-entry-container active"><button type="button" id="learn-button" class="top-level-entry menu-toggle" aria-controls="learn-menu" aria-expanded="false">Learn</button><a href="/es/docs/Learn_web_development" class="top-level-entry">Learn</a><ul id="learn-menu" class="submenu learn hidden inline-submenu-lg" aria-labelledby="learn-button"><li class="apis-link-container mobile-only "><a href="/es/docs/Learn_web_development" class="submenu-item "><div class="submenu-icon learn"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview / MDN Learning Area</div><p class="submenu-item-description">Learn web development</p></div></a></li><li class="apis-link-container desktop-only "><a href="/es/docs/Learn_web_development" class="submenu-item "><div class="submenu-icon learn"></div><div class="submenu-content-container"><div class="submenu-item-heading">MDN Learning Area</div><p class="submenu-item-description">Learn web development</p></div></a></li><li class="html-link-container "><a href="/es/docs/Learn_web_development/Core/Structuring_content" class="submenu-item "><div class="submenu-icon html"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTML</div><p class="submenu-item-description">Learn to structure web content with HTML</p></div></a></li><li class="css-link-container "><a href="/es/docs/Learn_web_development/Core/Styling_basics" class="submenu-item "><div class="submenu-icon css"></div><div class="submenu-content-container"><div class="submenu-item-heading">CSS</div><p class="submenu-item-description">Learn to style content using CSS</p></div></a></li><li class="javascript-link-container "><a href="/es/docs/Learn_web_development/Core/Scripting" class="submenu-item "><div class="submenu-icon javascript"></div><div class="submenu-content-container"><div class="submenu-item-heading">JavaScript</div><p class="submenu-item-description">Learn to run scripts in the browser</p></div></a></li><li class=" "><a href="/es/docs/Learn_web_development/Core/Accessibility" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Accessibility</div><p class="submenu-item-description">Learn to make the web accessible to all</p></div></a></li></ul></li><li class="top-level-entry-container "><button type="button" id="mdn-plus-button" class="top-level-entry menu-toggle" aria-controls="mdn-plus-menu" aria-expanded="false">Plus</button><a href="/es/plus" class="top-level-entry">Plus</a><ul id="mdn-plus-menu" class="submenu mdn-plus hidden inline-submenu-lg" aria-labelledby="mdn-plus-button"><li class=" "><a href="/es/plus" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview</div><p class="submenu-item-description">A customized MDN experience</p></div></a></li><li class=" "><a href="/es/plus/ai-help" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">AI Help</div><p class="submenu-item-description">Get real-time assistance and support</p></div></a></li><li class=" "><a href="/es/plus/updates" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Updates</div><p class="submenu-item-description">All browser compatibility updates at a glance</p></div></a></li><li class=" "><a href="/en-US/plus/docs/features/overview" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Documentation</div><p class="submenu-item-description">Learn how to use MDN Plus</p></div></a></li><li class=" "><a href="/en-US/plus/docs/faq" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">FAQ</div><p class="submenu-item-description">Frequently asked questions about MDN Plus</p></div></a></li></ul></li><li class="top-level-entry-container "><a class="top-level-entry menu-link" href="/en-US/curriculum/">Curriculum <sup class="new">New</sup></a></li><li class="top-level-entry-container "><a class="top-level-entry menu-link" href="/en-US/blog/">Blog</a></li><li class="top-level-entry-container "><button type="button" id="tools-button" class="top-level-entry menu-toggle" aria-controls="tools-menu" aria-expanded="false">Tools</button><ul id="tools-menu" class="submenu tools hidden inline-submenu-lg" aria-labelledby="tools-button"><li class=" "><a href="/es/play" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Playground</div><p class="submenu-item-description">Write, test and share your code</p></div></a></li><li class=" "><a href="/en-US/observatory" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTTP Observatory</div><p class="submenu-item-description">Scan a website for free</p></div></a></li><li class=" "><a href="/en-US/plus/ai-help" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">AI Help</div><p class="submenu-item-description">Get real-time assistance and support</p></div></a></li></ul></li></ul></nav><div class="header-search"><form action="/es/search" class="search-form search-widget" id="top-nav-search-form" role="search"><label id="top-nav-search-label" for="top-nav-search-input" class="visually-hidden">Search MDN</label><input aria-activedescendant="" aria-autocomplete="list" aria-controls="top-nav-search-menu" aria-expanded="false" aria-labelledby="top-nav-search-label" autoComplete="off" id="top-nav-search-input" role="combobox" type="search" class="search-input-field" name="q" placeholder=" " required="" value=""/><button type="button" class="button action has-icon clear-search-button"><span class="button-wrap"><span class="icon icon-cancel "></span><span class="visually-hidden">Clear search input</span></span></button><button type="submit" class="button action has-icon search-button"><span class="button-wrap"><span class="icon icon-search "></span><span class="visually-hidden">Search</span></span></button><div id="top-nav-search-menu" role="listbox" aria-labelledby="top-nav-search-label"></div></form></div><div class="theme-switcher-menu"><button type="button" class="button action has-icon theme-switcher-menu small" aria-haspopup="menu"><span class="button-wrap"><span class="icon icon-theme-os-default "></span>Theme</span></button></div><ul class="auth-container"><li><a href="/users/fxa/login/authenticate/?next=%2Fes%2Fdocs%2FLearn_web_development%2FExtensions%2FForms%2FYour_first_form" class="login-link" rel="nofollow">Log in</a></li><li><a href="/users/fxa/login/authenticate/?next=%2Fes%2Fdocs%2FLearn_web_development%2FExtensions%2FForms%2FYour_first_form" target="_self" rel="nofollow" class="button primary mdn-plus-subscribe-link"><span class="button-wrap">Sign up for free</span></a></li></ul></div></div></header><div class="article-actions-container"><div class="container"><button type="button" class="button action has-icon sidebar-button" aria-label="Expand sidebar" aria-expanded="false" aria-controls="sidebar-quicklinks"><span class="button-wrap"><span class="icon icon-sidebar "></span></span></button><nav class="breadcrumbs-container" aria-label="Breadcrumb"><ol typeof="BreadcrumbList" vocab="https://schema.org/" aria-label="breadcrumbs"><li property="itemListElement" typeof="ListItem"><a href="/es/docs/Learn_web_development" class="breadcrumb" property="item" typeof="WebPage"><span property="name">Aprende desarrollo web</span></a><meta property="position" content="1"/></li><li property="itemListElement" typeof="ListItem"><a href="/en-US/docs/Learn_web_development/Extensions" class="breadcrumb" property="item" typeof="WebPage"><span property="name">Extension modules</span></a><meta property="position" content="2"/></li><li property="itemListElement" typeof="ListItem"><a href="/es/docs/Learn_web_development/Extensions/Forms" class="breadcrumb" property="item" typeof="WebPage"><span property="name">Pilares de los formularios web</span></a><meta property="position" content="3"/></li><li property="itemListElement" typeof="ListItem"><a href="/es/docs/Learn_web_development/Extensions/Forms/Your_first_form" class="breadcrumb-current-page" property="item" typeof="WebPage"><span property="name">Mi primer formulario HTML</span></a><meta property="position" content="4"/></li></ol></nav><div class="article-actions"><button type="button" class="button action has-icon article-actions-toggle" aria-label="Article actions"><span class="button-wrap"><span class="icon icon-ellipses "></span><span class="article-actions-dialog-heading">Article Actions</span></span></button><ul class="article-actions-entries"><li class="article-actions-entry"><div class="languages-switcher-menu open-on-focus-within"><button id="languages-switcher-button" type="button" class="button action small has-icon languages-switcher-menu" aria-haspopup="menu"><span class="button-wrap"><span class="icon icon-language "></span>Español</span></button><div class="hidden"><ul class="submenu language-menu " aria-labelledby="language-menu-button"><li class=" "><form class="submenu-item locale-redirect-setting"><div class="group"><label class="switch"><input type="checkbox" name="locale-redirect"/><span class="slider"></span><span class="label">Remember language</span></label><a href="https://github.com/orgs/mdn/discussions/739" rel="external noopener noreferrer" target="_blank" title="Enable this setting to automatically switch to this language when it's available. (Click to learn more.)"><span class="icon icon-question-mark "></span></a></div></form></li><li class=" "><a data-locale="en-US" href="/en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form" class="button submenu-item"><span>English (US)</span></a></li><li class=" "><a data-locale="de" href="/de/docs/Learn_web_development/Extensions/Forms/Your_first_form" class="button submenu-item"><span>Deutsch</span><span title="Diese Übersetzung ist Teil eines Experiments."><span class="icon icon-experimental "></span></span></a></li><li class=" "><a data-locale="fr" href="/fr/docs/Learn_web_development/Extensions/Forms/Your_first_form" class="button submenu-item"><span>Français</span></a></li><li class=" "><a data-locale="ja" href="/ja/docs/Learn_web_development/Extensions/Forms/Your_first_form" class="button submenu-item"><span>日本語</span></a></li><li class=" "><a data-locale="ko" href="/ko/docs/Learn_web_development/Extensions/Forms/Your_first_form" class="button submenu-item"><span>한국어</span></a></li><li class=" "><a data-locale="pt-BR" href="/pt-BR/docs/Learn_web_development/Extensions/Forms/Your_first_form" class="button submenu-item"><span>Português (do Brasil)</span></a></li><li class=" "><a data-locale="zh-CN" href="/zh-CN/docs/Learn_web_development/Extensions/Forms/Your_first_form" class="button submenu-item"><span>中文 (简体)</span></a></li></ul></div></div></li></ul></div></div></div></div><div class="container"><div class="notecard localized-content-note"><p><a href="/es/docs/MDN/Community/Contributing/Translated_content#locales_activos">Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.</a></p></div></div><div class="main-wrapper"><div class="sidebar-container"><aside id="sidebar-quicklinks" class="sidebar"><button type="button" class="button action backdrop" aria-label="Collapse sidebar"><span class="button-wrap"></span></button><nav aria-label="Related Topics" class="sidebar-inner"><header class="sidebar-actions"><section class="sidebar-filter-container"><div class="sidebar-filter "><label id="sidebar-filter-label" class="sidebar-filter-label" for="sidebar-filter-input"><span class="icon icon-filter"></span><span class="visually-hidden">Filter sidebar</span></label><input id="sidebar-filter-input" autoComplete="off" class="sidebar-filter-input-field false" type="text" placeholder="Filter" value=""/><button type="button" class="button action has-icon clear-sidebar-filter-button"><span class="button-wrap"><span class="icon icon-cancel "></span><span class="visually-hidden">Clear filter input</span></span></button></div></section></header><div class="sidebar-inner-nav"><div class="in-nav-toc"><div class="document-toc-container"><section class="document-toc"><header><h2 class="document-toc-heading">En este artículo</h2></header><ul class="document-toc-list"><li class="document-toc-item "><a class="document-toc-link" href="#¿qué_son_los_formularios_web">¿Qué son los formularios web?</a></li><li class="document-toc-item "><a class="document-toc-link" href="#diseñar_tu_formulario">Diseñar tu formulario</a></li><li class="document-toc-item "><a class="document-toc-link" href="#aprendizaje_activo_la_implementación_de_nuestro_formulario_html">Aprendizaje activo: La implementación de nuestro formulario HTML</a></li><li class="document-toc-item "><a class="document-toc-link" href="#aplicar_estilo_básico_a_un_formulario">Aplicar estilo básico a un formulario</a></li><li class="document-toc-item "><a class="document-toc-link" href="#enviar_los_datos_del_formulario_a_un_servidor_web">Enviar los datos del formulario a un servidor web</a></li><li class="document-toc-item "><a class="document-toc-link" href="#resumen">Resumen</a></li></ul></section></div></div><div class="sidebar-body"><ol><li class="section"><a href="/en-US/docs/Learn_web_development/Getting_started" class="only-in-en-us">Getting started modules</a></li><li class="toggle"><details><summary><a href="/en-US/docs/Learn_web_development/Getting_started/Environment_setup" class="only-in-en-us">Environment setup</a></summary><ol><li><a href="/es/docs/Learn_web_development/Getting_started/Environment_setup/Installing_software">Instalación de software básico</a></li><li><a href="/es/docs/Learn_web_development/Getting_started/Environment_setup/Browsing_the_web">¿Cuál es la diferencia entre la página web, el sitio web, el servidor web y el motor de búsqueda?</a></li><li><a href="/en-US/docs/Learn_web_development/Getting_started/Environment_setup/Code_editors" class="only-in-en-us">Code editors</a></li><li><a href="/es/docs/Learn_web_development/Getting_started/Environment_setup/Dealing_with_files">Manejo de archivos</a></li><li><a href="/en-US/docs/Learn_web_development/Getting_started/Environment_setup/Command_line" class="only-in-en-us">Command line crash course</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Getting_started/Your_first_website">Your first website</a></summary><ol><li><a href="/es/docs/Learn_web_development/Getting_started/Your_first_website/What_will_your_website_look_like">¿Cuál será la apariencia de tu sitio Web?</a></li><li><a href="/es/docs/Learn_web_development/Getting_started/Your_first_website/Creating_the_content">Conceptos básicos de HTML</a></li><li><a href="/es/docs/Learn_web_development/Getting_started/Your_first_website/Styling_the_content">CSS básico</a></li><li><a href="/es/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity">Fundamentos de JavaScript</a></li><li><a href="/es/docs/Learn_web_development/Getting_started/Your_first_website/Publishing_your_website">Publicar tu sitio web</a></li></ol></details></li><li class="toggle"><details><summary><a href="/en-US/docs/Learn_web_development/Getting_started/Web_standards" class="only-in-en-us">Web standards</a></summary><ol><li><a href="/es/docs/Learn_web_development/Getting_started/Web_standards/How_the_web_works">Cómo funciona la web</a></li><li><a href="/es/docs/Learn_web_development/Getting_started/Web_standards/The_web_standards_model">La web y los estándares web</a></li><li><a href="/en-US/docs/Learn_web_development/Getting_started/Web_standards/How_browsers_load_websites" class="only-in-en-us">How browsers load websites</a></li></ol></details></li><li class="toggle"><details><summary><a href="/en-US/docs/Learn_web_development/Getting_started/Soft_skills" class="only-in-en-us">Soft skills</a></summary><ol><li><a href="/en-US/docs/Learn_web_development/Getting_started/Soft_skills/Research_and_learning" class="only-in-en-us">Research and learning</a></li><li><a href="/en-US/docs/Learn_web_development/Getting_started/Soft_skills/Collaboration_and_teamwork" class="only-in-en-us">Collaboration and teamwork</a></li><li><a href="/en-US/docs/Learn_web_development/Getting_started/Soft_skills/Workflows_and_processes" class="only-in-en-us">Workflows and processes</a></li><li><a href="/en-US/docs/Learn_web_development/Getting_started/Soft_skills/Job_interviews" class="only-in-en-us">Succeeding in job interviews</a></li></ol></details></li><li class="section"><a href="/en-US/docs/Learn_web_development/Core" class="only-in-en-us">Core modules</a></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Core/Structuring_content">Structuring content with HTML</a></summary><ol><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax">Primeros pasos con HTML</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Webpage_metadata">¿Qué hay en la cabecera? Metadatos en HTML</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Headings_and_paragraphs">Fundamentos de texto en HTML</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Structuring_content/Emphasis_and_importance" class="only-in-en-us">Emphasis and importance</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Structuring_content/Lists" class="only-in-en-us">Lists</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Structuring_documents">Estructura web y documentación</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features">Formateo de texto avanzado</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Creating_links">Crear hipervínculos</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Marking_up_a_letter">Marcando una Carta</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Structuring_a_page_of_content">Estructuración de una Página de contenido</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/HTML_images">Imágenes en HTML</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio">Contenido de audio y video</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Mozilla_splash_page">Página de bienvenida de Mozilla</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/HTML_table_basics">Conceptos básicos de las tablas HTML</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Table_accessibility">Funciones avanzadas de las tablas HTML y accesibilidad</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Planet_data_table">Evaluación: Estructurando datos planetarios</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Structuring_content/HTML_forms" class="only-in-en-us">Forms and buttons in HTML</a></li><li><a href="/es/docs/Learn_web_development/Core/Structuring_content/Debugging_HTML">Depurar el HTML</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Core/Styling_basics">CSS styling basics</a></summary><ol><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/What_is_CSS">Cómo funciona CSS</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Getting_started">Empezar con CSS</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Styling_a_bio_page">Usa tu nuevo conocimiento</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Basic_selectors">Selectores CSS</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Attribute_selectors">Selectores de atributo</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Pseudo_classes_and_elements">Pseudoclases y pseudoelementos</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Combinators">Combinadores</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Box_model">El modelo de caja</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Handling_conflicts">Cascada y herencia</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Values_and_units">Valores y unidades CSS</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Sizing">Dimensionar elementos en CSS</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Backgrounds_and_borders">Fondos y bordes</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Overflow">Contenido desbordado</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Images_media_forms">Imágenes, medios y elementos de formulario</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Tables">Estilizando tablas</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Debugging_CSS">Depurar el CSS</a></li><li><a href="/es/docs/Learn_web_development/Core/Styling_basics/Fundamental_CSS_comprehension">Comprensión de los fundamentos de CSS</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Styling_basics/Fancy_letterheaded_paper" class="only-in-en-us">Challenge: Creating fancy letterheaded paper</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Styling_basics/Cool-looking_box" class="only-in-en-us">Challenge: A cool-looking box</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Core/Text_styling">CSS text styling</a></summary><ol><li><a href="/es/docs/Learn_web_development/Core/Text_styling/Fundamentals">Fundamentos de texto y fuentes tipográficas</a></li><li><a href="/es/docs/Learn_web_development/Core/Text_styling/Styling_lists">Aplicación de estilo a listas</a></li><li><a href="/es/docs/Learn_web_development/Core/Text_styling/Styling_links">Dar estilo a los enlaces</a></li><li><a href="/es/docs/Learn_web_development/Core/Text_styling/Web_fonts">Fuentes web</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Text_styling/Typesetting_a_homepage" class="only-in-en-us">Challenge: Typesetting a community school homepage</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Core/CSS_layout">CSS layout</a></summary><ol><li><a href="/es/docs/Learn_web_development/Core/CSS_layout/Introduction">Introducción al diseño en CSS</a></li><li><a href="/es/docs/Learn_web_development/Core/CSS_layout/Floats">Floats</a></li><li><a href="/en-US/docs/Learn_web_development/Core/CSS_layout/Positioning" class="only-in-en-us">Positioning</a></li><li><a href="/es/docs/Learn_web_development/Core/CSS_layout/Flexbox">Flexbox</a></li><li><a href="/es/docs/Learn_web_development/Core/CSS_layout/Grids">Cuadrículas</a></li><li><a href="/es/docs/Learn_web_development/Core/CSS_layout/Responsive_Design">Diseño receptivo</a></li><li><a href="/en-US/docs/Learn_web_development/Core/CSS_layout/Media_queries" class="only-in-en-us">Media query fundamentals</a></li><li><a href="/en-US/docs/Learn_web_development/Core/CSS_layout/Fundamental_Layout_Comprehension" class="only-in-en-us">Challenge: Fundamental layout comprehension</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Core/Scripting">Dynamic scripting with JavaScript</a></summary><ol><li><a href="/es/docs/Learn_web_development/Core/Scripting/What_is_JavaScript">¿Qué es JavaScript?</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/A_first_splash">Un primer acercamiento a JavaScript</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/What_went_wrong">¿Qué ha salido mal? Corrigiendo JavaScript</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Variables">Almacenando la información que necesitas - Variables</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Math">Matemáticas básicas en JavaScript — números y operadores</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Strings">Manejar texto — cadenas en JavaScript</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Useful_string_methods">Métodos útiles con cadenas</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Arrays">Arreglos</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Silly_story_generator">Generador de historias absurdas</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Conditionals">Tomando decisiones en tu código — condicionales</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Loops">Código de bucle</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Scripting/Functions" class="only-in-en-us">Functions — reusable blocks of code</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Build_your_own_function">Construye tu propia función</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Return_values">Una función retorna valores</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Events">Introducción a los eventos</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Scripting/Event_bubbling" class="only-in-en-us">Event bubbling</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Scripting/Image_gallery" class="only-in-en-us">Challenge: Image gallery</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Object_basics">Conceptos básicos de los objetos JavaScript</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Scripting/DOM_scripting" class="only-in-en-us">DOM scripting introduction</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/Network_requests">AJAX</a></li><li><a href="/es/docs/Learn_web_development/Core/Scripting/JSON">Trabajando con JSON</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Scripting/Debugging_JavaScript" class="only-in-en-us">Debugging JavaScript and handling errors</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Core/Frameworks_libraries">JavaScript frameworks and libraries</a></summary><ol><li><a href="/en-US/docs/Learn_web_development/Core/Frameworks_libraries/Introduction" class="only-in-en-us">Introduction to client-side frameworks</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Frameworks_libraries/Main_features" class="only-in-en-us">Framework main features</a></li><li><a href="/es/docs/Learn_web_development/Core/Frameworks_libraries/React_getting_started">Primeros pasos en React</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_todo_list_beginning" class="only-in-en-us">Beginning our React todo list</a></li><li><a href="/es/docs/Learn_web_development/Core/Frameworks_libraries/React_components">Creando componentes en nuestra app de React</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_interactivity_events_state" class="only-in-en-us">React interactivity: Events and state</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_interactivity_filtering_conditional_rendering" class="only-in-en-us">React interactivity: Editing, filtering, conditional rendering</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_accessibility" class="only-in-en-us">Accessibility in React</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_resources" class="only-in-en-us">React resources</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Core/Accessibility">Accessibility</a></summary><ol><li><a href="/es/docs/Learn_web_development/Core/Accessibility/What_is_accessibility">¿Qué es la accesibilidad?</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Accessibility/Tooling" class="only-in-en-us">Accessibility tooling and assistive technology</a></li><li><a href="/es/docs/Learn_web_development/Core/Accessibility/HTML">HTML: Una buena base para la accesibilidad</a></li><li><a href="/es/docs/Learn_web_development/Core/Accessibility/CSS_and_JavaScript">Buenas prácticas de accesibilidad CSS y JavaScript</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Accessibility/WAI-ARIA_basics" class="only-in-en-us">WAI-ARIA basics</a></li><li><a href="/en-US/docs/Learn_web_development/Core/Accessibility/Multimedia" class="only-in-en-us">Accessible multimedia</a></li><li><a href="/es/docs/Learn_web_development/Core/Accessibility/Mobile">Mobile accessibility</a></li><li><a href="/es/docs/Learn_web_development/Core/Accessibility/Accessibility_troubleshooting">Evaluación: Solución de problemas de accesibilidad</a></li></ol></details></li><li><a href="/en-US/docs/Learn_web_development/Core/Design_for_developers" class="only-in-en-us">Design for developers</a></li><li><a href="/es/docs/Learn_web_development/Core/Version_control">Version control</a></li><li class="section"><a href="/en-US/docs/Learn_web_development/Extensions" class="only-in-en-us">Extension modules</a></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects">Advanced JavaScript objects</a></summary><ol><li><a href="/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_prototypes">Prototipos de objetos</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object-oriented_programming" class="only-in-en-us">Object-oriented programming</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Classes_in_JavaScript">Clases en JavaScript</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_building_practice">Ejercicio práctico de construcción de objetos</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Adding_bouncing_balls_features">Añadiendo características a nuestra demo de bouncing balls</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Client-side_APIs">Client-side web APIs</a></summary><ol><li><a href="/es/docs/Learn_web_development/Extensions/Client-side_APIs/Introduction">Introducción a las APIs web</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Video_and_audio_APIs" class="only-in-en-us">Video and Audio APIs</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Drawing_graphics" class="only-in-en-us">Drawing graphics</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Client-side_APIs/Client-side_storage">Almacenamiento del lado cliente</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Third_party_APIs" class="only-in-en-us">Third-party APIs</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Async_JS">Asynchronous JavaScript</a></summary><ol><li><a href="/es/docs/Learn_web_development/Extensions/Async_JS/Introducing">Introducción a JavaScript asíncrono</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Async_JS/Promises" class="only-in-en-us">How to use promises</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Async_JS/Implementing_a_promise-based_API" class="only-in-en-us">How to implement a promise-based API</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Async_JS/Introducing_workers" class="only-in-en-us">Introducing workers</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Async_JS/Sequencing_animations" class="only-in-en-us">Challenge: Sequencing animations</a></li></ol></details></li><li class="toggle"><details open=""><summary><a href="/es/docs/Learn_web_development/Extensions/Forms">Web forms</a></summary><ol><li><em><a href="/es/docs/Learn_web_development/Extensions/Forms/Your_first_form" aria-current="page">Mi primer formulario HTML</a></em></li><li><a href="/es/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form">Cómo estructurar un formulario HTML</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Forms/Basic_native_form_controls">Controles de formulario originales</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Forms/HTML5_input_types">Tipos de input de HTML5</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Forms/Other_form_controls" class="only-in-en-us">Other form controls</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Forms/Styling_web_forms">Estilizando formularios HTML</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Forms/Advanced_form_styling" class="only-in-en-us">Advanced form styling</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Forms/UI_pseudo-classes" class="only-in-en-us">UI pseudo-classes</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Forms/Form_validation">Validación de formularios de datos</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data">Sending form data</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Client-side_tools">Understanding client-side tools</a></summary><ol><li><a href="/en-US/docs/Learn_web_development/Extensions/Client-side_tools/Overview" class="only-in-en-us">Client-side tooling overview</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Client-side_tools/Package_management" class="only-in-en-us">Package management basics</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Client-side_tools/Introducing_complete_toolchain" class="only-in-en-us">Introducing a complete toolchain</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Client-side_tools/Deployment" class="only-in-en-us">Deploying our app</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Server-side">Server-side websites</a></summary><ol><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Server-side/First_steps">Server-side first steps</a></summary><ol><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/First_steps/Introduction">Introducción al lado servidor</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/First_steps/Client-Server_overview">Visión General Cliente-Servidor</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/First_steps/Web_frameworks">Frameworks Web de lado servidor</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/First_steps/Website_security">Seguridad de Sitios Web</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django">Django web framework (Python)</a></summary><ol><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Introduction">Introducción a Django</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/development_environment">Puesta en marcha de un entorno de desarrollo Django</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Tutorial_local_library_website">Tutorial Django: El Sitio Web de La Biblioteca Local</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/skeleton_website">Tutorial Django Parte 2: Creación del esqueleto del sitio web</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Models">Tutorial Django Parte 3: Uso de modelos</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Admin_site">Tutorial Django Parte 4: Sitio de Administración de Django</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Home_page">Tutorial de Django Parte 5: Creación de tu página de inicio</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Generic_views">Tutorial de Django Parte 6: Listas genéricas y vistas de detalle</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Sessions">Tutorial de Django Parte 7: Framework de sesiones</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Authentication">Tutorial de Django Parte 8: Autenticación y permisos de Usuario</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Forms">Tutorial de Django Parte 9: Trabajo con formularios</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Testing">Tutorial de Django Parte 10: Probando una aplicación web Django</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Django/Deployment">Tutorial de Django Parte 11: Desplegando Django a producción</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Server-side/Django/web_application_security" class="only-in-en-us">Django web application security</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Server-side/Django/django_assessment_blog" class="only-in-en-us">Assessment: DIY Django mini blog</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs">Express web framework (Node.js)</a></summary><ol><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Introduction">Introducción a Express/Node</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/development_environment">Setting up a Node development environment</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Tutorial_local_library_website">Express Tutorial: El sitio web de la Biblioteca Local</a></li><li><a href="/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/skeleton_website">Express Tutorial Part 2: Creating a skeleton website</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/mongoose" class="only-in-en-us">Express Tutorial Part 3: Using a Database (with Mongoose)</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/routes" class="only-in-en-us">Express Tutorial Part 4: Routes and controllers</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data" class="only-in-en-us">Express Tutorial Part 5: Displaying library data</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/forms" class="only-in-en-us">Express Tutorial Part 6: Working with forms</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/deployment" class="only-in-en-us">Express Tutorial Part 7: Deploying to production</a></li></ol></details></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Performance">Web performance</a></summary><ol><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/why_web_performance" class="only-in-en-us">The "why" of web performance</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/What_is_web_performance" class="only-in-en-us">What is web performance?</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/Perceived_performance" class="only-in-en-us">Perceived performance</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/Measuring_performance" class="only-in-en-us">Measuring performance</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/Multimedia" class="only-in-en-us">Multimedia: Images</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/video" class="only-in-en-us">Multimedia: video</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/JavaScript" class="only-in-en-us">JavaScript performance optimization</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/HTML" class="only-in-en-us">HTML performance optimization</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/CSS" class="only-in-en-us">CSS performance optimization</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Performance/business_case_for_performance" class="only-in-en-us">The business case for web performance</a></li></ol></details></li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Extensions/Testing">Testing</a></summary><ol><li><a href="/en-US/docs/Learn_web_development/Extensions/Testing/Introduction" class="only-in-en-us">Introduction to cross-browser testing</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Testing/Testing_strategies" class="only-in-en-us">Strategies for carrying out testing</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Testing/HTML_and_CSS" class="only-in-en-us">Handling common HTML and CSS problems</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Testing/Feature_detection" class="only-in-en-us">Implementing feature detection</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Testing/Automated_testing" class="only-in-en-us">Introduction to automated testing</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Testing/Your_own_automation_environment" class="only-in-en-us">Setting up your own test automation environment</a></li></ol></details></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Transform_animate" class="only-in-en-us">Transform and animate CSS</a></li><li><a href="/en-US/docs/Learn_web_development/Extensions/Security_privacy" class="only-in-en-us">Security and privacy</a></li><li class="section">Further resources</li><li class="toggle"><details><summary><a href="/es/docs/Learn_web_development/Howto">How to solve common problems</a></summary><ol><li><a href="/es/docs/Learn_web_development/Howto/Solve_HTML_problems">Solución de problemas comunes de HTML</a></li><li><a href="/es/docs/Learn_web_development/Howto/Solve_CSS_problems">Usa CSS para resolver problemas comunes</a></li><li><a href="/es/docs/Learn_web_development/Howto/Solve_JavaScript_problems">Resuelva problemas comunes en su código JavaScript</a></li><li><a href="/en-US/docs/Learn_web_development/Howto/Web_mechanics" class="only-in-en-us">Web mechanics</a></li><li><a href="/en-US/docs/Learn_web_development/Howto/Tools_and_setup" class="only-in-en-us">Tools and setup</a></li><li><a href="/en-US/docs/Learn_web_development/Howto/Design_and_accessibility" class="only-in-en-us">Design and accessibility</a></li></ol></details></li><li><a href="/en-US/docs/Learn_web_development/About" class="only-in-en-us">About</a></li><li><a href="/en-US/docs/Learn_web_development/Educators" class="only-in-en-us">Resources for educators</a></li><li><a href="/en-US/docs/Learn_web_development/Changelog" class="only-in-en-us">Changelog</a></li></ol></div></div><section class="place side"></section></nav></aside><div class="toc-container"><aside class="toc"><nav><div class="document-toc-container"><section class="document-toc"><header><h2 class="document-toc-heading">En este artículo</h2></header><ul class="document-toc-list"><li class="document-toc-item "><a class="document-toc-link" href="#¿qué_son_los_formularios_web">¿Qué son los formularios web?</a></li><li class="document-toc-item "><a class="document-toc-link" href="#diseñar_tu_formulario">Diseñar tu formulario</a></li><li class="document-toc-item "><a class="document-toc-link" href="#aprendizaje_activo_la_implementación_de_nuestro_formulario_html">Aprendizaje activo: La implementación de nuestro formulario HTML</a></li><li class="document-toc-item "><a class="document-toc-link" href="#aplicar_estilo_básico_a_un_formulario">Aplicar estilo básico a un formulario</a></li><li class="document-toc-item "><a class="document-toc-link" href="#enviar_los_datos_del_formulario_a_un_servidor_web">Enviar los datos del formulario a un servidor web</a></li><li class="document-toc-item "><a class="document-toc-link" href="#resumen">Resumen</a></li></ul></section></div></nav></aside><section class="place side"></section></div></div><main id="content" class="main-content "><article class="main-page-content" lang="es"><header><h1>Mi primer formulario HTML</h1></header><div class="section-content"><ul class="prev-next"><li><a class="button secondary" href="/es/docs/Learn_web_development/Extensions/Forms"><span class="button-wrap"> Overview: Pilares de los formularios web</span></a></li><li><a class="button secondary" href="/es/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form"><span class="button-wrap"> Siguiente </span></a></li></ul> <p>El primer artículo de nuestra serie te proporciona una primera experiencia de creación de un formulario web, que incluye diseñar un formulario sencillo con controles de formulario adecuados y otros elementos HTML, añadir un poco de estilo muy simple con CSS y describir cómo se envían los datos a un servidor. Ampliaremos cada uno de estos subtemas más adelante.</p> <figure class="table-container"><table> <tbody> <tr> <th scope="row">Prerrequisitos:</th> <td> Conocimientos básicos de informática y de <a href="/es/docs/conflicting/Learn_web_development/Core/Structuring_content">lenguaje HTML</a>. </td> </tr> <tr> <th scope="row">Objetivo:</th> <td> Familiarizarse con los formularios web, para qué se usan, cómo diseñarlos y qué elementos HTML básicos vas a necesitar para casos sencillos. </td> </tr> </tbody> </table></figure></div><section aria-labelledby="¿qué_son_los_formularios_web"><h2 id="¿qué_son_los_formularios_web"><a href="#¿qué_son_los_formularios_web">¿Qué son los formularios web?</a></h2><div class="section-content"><p>Los <strong>formularios web</strong> son uno de los principales puntos de interacción entre un usuario y un sitio web o aplicación. Los formularios permiten a los usuarios la introducción de datos, que generalmente se envían a un servidor web para su procesamiento y almacenamiento (consulta <a href="/es/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data">Enviar los datos de un formulario</a> más adelante en el módulo), o se usan en el lado del cliente para provocar de alguna manera una actualización inmediata de la interfaz (por ejemplo, se añade otro elemento a una lista, o se muestra u oculta una función de interfaz de usuario).</p> <p>El HTML de un <strong>formulario web</strong> está compuesto por uno o más <strong>controles de formulario</strong> (a veces llamados <strong>widgets</strong>), además de algunos elementos adicionales que ayudan a estructurar el formulario general; a menudo se los conoce como <strong>formularios HTML</strong>. Los controles pueden ser campos de texto de una o varias líneas, cajas desplegables, botones, casillas de verificación o botones de opción, y se crean principalmente con el elemento <a href="/es/docs/Web/HTML/Element/input"><code><input></code></a>, aunque hay algunos otros elementos que también hay que conocer.</p> <p>Los controles de formulario también se pueden programar para forzar la introducción de formatos o valores específicos (<strong>validación de formulario</strong>), y se combinan con etiquetas de texto que describen su propósito para los usuarios con y sin discapacidad visual.</p></div></section><section aria-labelledby="diseñar_tu_formulario"><h2 id="diseñar_tu_formulario"><a href="#diseñar_tu_formulario">Diseñar tu formulario</a></h2><div class="section-content"><p>Antes de comenzar a escribir código, siempre es mejor dar un paso atrás y tomarte el tiempo necesario para pensar en tu formulario. Diseñar una maqueta rápida te ayudará a definir el conjunto de datos adecuado que deseas pedirle al usuario que introduzca. Desde el punto de vista de la experiencia del usuario (UX), es importante recordar que cuanto más grande es tu formulario, más te arriesgas a frustrar a las personas y perder usuarios. Tiene que ser simple y conciso: solicita solo los datos que necesitas.</p> <p>Diseñar formularios es un paso importante cuando creas un sitio web o una aplicación. Va más allá del alcance de este artículo exponer la experiencia de usuario de los formularios, pero si deseas profundizar en ese tema, puedes leer los artículos siguientes:</p> <ul> <li>Smashing Magazine tiene algunos <a href="https://www.smashingmagazine.com/2018/08/ux-html5-mobile-form-part-1/" class="external" target="_blank">artículos muy buenos sobre formularios UX</a>, incluido el artículo —antiguo pero relevante— <a href="https://www.smashingmagazine.com/2011/11/extensive-guide-web-form-usability/" class="external" target="_blank">An Extensive Guide To Web Form Usability</a> [Amplia guía de usabilidad para formularios web].</li> <li>UXMatters también es un recurso que da buenos consejos, desde <a href="http://www.uxmatters.com/mt/archives/2012/05/7-basic-best-practices-for-buttons.php" class="external" target="_blank">buenas prácticas básicas</a> hasta cuestiones complejas como los <a href="http://www.uxmatters.com/mt/archives/2010/03/pagination-in-web-forms-evaluating-the-effectiveness-of-web-forms.php" class="external" target="_blank">formularios de varias páginas</a>.</li> </ul> <p>En este artículo, vamos a crear un formulario de contacto sencillo. Hagamos un esbozo.</p> <p><img src="/es/docs/Learn_web_development/Extensions/Forms/Your_first_form/form-sketch-low.jpg" alt="Esbozo aproximado del formulario que vamos a construir" width="400" height="352" loading="lazy"></p> <p>Nuestro formulario va a tener tres campos de texto y un botón. Le pedimos al usuario su nombre, su correo electrónico y el mensaje que desea enviar. Al pulsar el botón sus datos se enviarán a un servidor web.</p></div></section><section aria-labelledby="aprendizaje_activo_la_implementación_de_nuestro_formulario_html"><h2 id="aprendizaje_activo_la_implementación_de_nuestro_formulario_html"><a href="#aprendizaje_activo_la_implementación_de_nuestro_formulario_html">Aprendizaje activo: La implementación de nuestro formulario HTML</a></h2><div class="section-content"><p>De acuerdo, intentemos crear el HTML para nuestro formulario. Vamos a utilizar los elementos HTML siguientes: <a href="/es/docs/Web/HTML/Element/form"><code><form></code></a>, <a href="/es/docs/Web/HTML/Element/label"><code><label></code></a>, <a href="/es/docs/Web/HTML/Element/input"><code><input></code></a>, <a href="/es/docs/Web/HTML/Element/textarea"><code><textarea></code></a> y <a href="/es/docs/Web/HTML/Element/button"><code><button></code></a>.</p> <p>Antes de continuar, haz una copia local de nuestra <a href="https://github.com/mdn/learning-area/blob/master/html/introduction-to-html/getting-started/index.html" class="external" target="_blank">plantilla HTML simple</a>: introduce aquí tu formulario HTML.</p></div></section><section aria-labelledby="el_elemento_form"><h3 id="el_elemento_form"><a href="#el_elemento_form">El elemento <code>form</code></a></h3><div class="section-content"><p>Todos los formularios comienzan con un elemento <a href="/es/docs/Web/HTML/Element/form"><code><form></code></a>, como este:</p> <div class="code-example"><div class="example-header"><span class="language-name">html</span></div><pre class="brush: html notranslate"><code><form action="/my-handling-form-page" method="post"></form> </code></pre></div> <p>Este elemento define formalmente un formulario. Es un elemento contenedor, como un elemento <a href="/es/docs/Web/HTML/Element/section"><code><section></code></a> o <a href="/es/docs/Web/HTML/Element/footer"><code><footer></code></a>, pero específico para contener formularios; también admite algunos atributos específicos para la configuración de la forma en que se comporta el formulario. Todos sus atributos son opcionales, pero es una práctica estándar establecer siempre al menos los atributos <a href="/es/docs/Web/HTML/Element/form#action"><code>action</code></a> y <a href="/es/docs/Web/HTML/Element/form#method"><code>method</code></a>:</p> <ul> <li>El atributo <code>action</code> define la ubicación (URL) donde se envían los datos que el formulario ha recopilado cuando se validan.</li> <li>El atributo <code>method</code> define con qué método HTTP se envían los datos (generalmente <code>get</code> o <code>post</code>).</li> </ul> <div class="notecard note"> <p><strong>Nota:</strong> Veremos cómo funcionan esos atributos en nuestro artículo <a href="/es/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data">Enviar los datos de un formulario</a> que encontrarás más adelante.</p> </div> <p>Por ahora, añade el elemento <a href="/es/docs/Web/HTML/Element/form"><code><form></code></a> anterior a tu elemento HTML <a href="/es/docs/Web/HTML/Element/body"><code><body></code></a>.</p></div></section><section aria-labelledby="los_elementos_label_input_y_textarea"><h3 id="los_elementos_label_input_y_textarea"><a href="#los_elementos_label_input_y_textarea">Los elementos <code><label></code>, <code><input></code> y <code><textarea></code></a></h3><div class="section-content"><p>Nuestro formulario de contacto no es complejo: la parte para la entrada de datos contiene tres campos de texto, cada uno con su elemento <a href="/es/docs/Web/HTML/Element/label"><code><label></code></a> correspondiente:</p> <ul> <li>El campo de entrada para el nombre es un <a href="/es/docs/Web/HTML/Element/input/text">campo de texto de una sola línea</a>.</li> <li>El campo de entrada para el correo electrónico es una <a href="/es/docs/Web/HTML/Element/input/email">entrada de datos de tipo correo electrónico</a>: un campo de texto de una sola línea que acepta solo direcciones de correo electrónico.</li> <li>El campo de entrada para el mensaje es <a href="/es/docs/Web/HTML/Element/textarea"><code><textarea></code></a>; un campo de texto multilínea.</li> </ul> <p>En términos de código HTML, para implementar estos controles de formulario necesitamos algo como lo siguiente:</p> <div class="code-example"><div class="example-header"><span class="language-name">html</span></div><pre class="brush: html notranslate"><code><form action="/my-handling-form-page" method="post"> <ul> <li> <label for="name">Nombre:</label> <input type="text" id="name" name="user_name" /> </li> <li> <label for="mail">Correo electrónico:</label> <input type="email" id="mail" name="user_mail" /> </li> <li> <label for="msg">Mensaje:</label> <textarea id="msg" name="user_message"></textarea> </li> </ul> </form> </code></pre></div> <p>Actualiza el código de tu formulario para que se vea como el anterior.</p> <p>Los elementos <a href="/es/docs/Web/HTML/Element/li"><code><li></code></a> están ahí para estructurar nuestro código convenientemente y facilitar la aplicación de estilo (ver más adelante en el artículo). Por motivos de usabilidad y accesibilidad incluimos una etiqueta explícita para cada control de formulario. Ten en cuenta el uso del atributo <a href="/en-US/docs/Web/HTML/Attributes/for" class="only-in-en-us"><code>for</code></a> en todos los elementos <a href="/es/docs/Web/HTML/Element/label"><code><label></code></a>, que toma como valor el <a href="/es/docs/Web/HTML/Global_attributes/id"><code>id</code></a> del control de formulario con el que está asociado; así es como asocias un formulario con su etiqueta.</p> <p>Hacer esto presenta muchas ventajas porque la etiqueta está asociada al control del formulario y permite que los usuarios con ratón, panel táctil y dispositivos táctiles hagan clic en la etiqueta para activar el control correspondiente, y también proporciona accesibilidad con un nombre que los lectores de pantalla leen a sus usuarios. Encontrarás más detalles sobre las etiquetas de los formularios en <a href="/es/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form">Cómo estructurar un formulario web</a>.</p> <p>En el elemento <a href="/es/docs/Web/HTML/Element/input"><code><input></code></a>, el atributo más importante es <code>type</code>. Este atributo es muy importante porque define la forma en que el elemento <a href="/es/docs/Web/HTML/Element/input"><code><input></code></a> aparece y se comporta. Encontrarás más información sobre esto en el artículo sobre <a href="/es/docs/Learn_web_development/Extensions/Forms/Basic_native_form_controls">Controles de formularios nativos básicos</a> más adelante.</p> <ul> <li>En nuestro ejemplo sencillo, usamos el valor <a href="/es/docs/Web/HTML/Element/input/text"><code><input/text></code></a> para la primera entrada, el valor predeterminado para este atributo. Representa un campo de texto básico de una sola línea que acepta cualquier tipo de entrada de texto.</li> <li>Para la segunda entrada, usamos el valor <a href="/es/docs/Web/HTML/Element/input/email"><code><input/email></code></a>, que define un campo de texto de una sola línea que solo acepta una dirección de correo electrónico. Esto convierte un campo de texto básico en una especie de campo «inteligente» que efectúa algunas comprobaciones de validación de los datos que el usuario escribe. También hace que aparezca un diseño de teclado más apropiado para introducir direcciones de correo electrónico (por ejemplo, con un símbolo @ por defecto) en dispositivos con teclados dinámicos, como teléfonos inteligentes. Encontrarás más información sobre la validación de formularios en el artículo de <a href="/es/docs/Learn_web_development/Extensions/Forms/Form_validation">Validación de formularios por parte del cliente</a> más adelante.</li> </ul> <p>Por último, pero no por ello menos importante, ten en cuenta la sintaxis de <code><input></code> en contraposición con la de <code><textarea></textarea></code>. Esta es una de las rarezas del HTML. La etiqueta <code><input></code> es un elemento vacío, lo que significa que no necesita una etiqueta de cierre. El elemento <a href="/es/docs/Web/HTML/Element/textarea"><code><textarea></code></a> no es un elemento vacío, lo que significa que debe cerrarse con la etiqueta de cierre adecuada. Esto tiene un impacto en una característica específica de los formularios: el modo en que defines el valor predeterminado. Para definir el valor predeterminado de un elemento <a href="/es/docs/Web/HTML/Element/input"><code><input></code></a>, debes usar el atributo <a href="/es/docs/Web/HTML/Element/input#value"><code>value</code></a> de esta manera:</p> <div class="code-example"><div class="example-header"><span class="language-name">html</span></div><pre class="brush: html notranslate"><code><input type="text" value="por defecto este elemento se llena con este texto" /> </code></pre></div> <p>Por otro lado, si deseas definir un valor predeterminado para un elemento <a href="/es/docs/Web/HTML/Element/textarea"><code><textarea></code></a>, lo colocas entre las etiquetas de apertura y cierre del elemento <a href="/es/docs/Web/HTML/Element/textarea"><code><textarea></code></a>, así:</p> <div class="code-example"><div class="example-header"><span class="language-name">html</span></div><pre class="brush: html notranslate"><code><textarea> Por defecto, este elemento contiene este texto </textarea> </code></pre></div></div></section><section aria-labelledby="el_elemento_button"><h3 id="el_elemento_button"><a href="#el_elemento_button">El elemento <code>button</code></a></h3><div class="section-content"><p>El marcado de nuestro formulario está casi completo; solo necesitamos añadir un botón para permitir que el usuario envíe sus datos una vez que haya completado el formulario. Esto se hace con el elemento <a href="/es/docs/Web/HTML/Element/button"><code><button></code></a>; añade lo siguiente justo encima de la etiqueta de cierre <code></form></code>:</p> <div class="code-example"><div class="example-header"><span class="language-name">html</span></div><pre class="brush: html notranslate"><code><li class="button"> <button type="submit">Envíe su mensaje</button> </li> </code></pre></div> <p>El elemento <a href="/es/docs/Web/HTML/Element/button"><code><button></code></a> también acepta un atributo de <code>type</code>, que a su vez acepta uno de estos tres valores: <code>submit</code>, <code>reset</code> o <code>button</code>.</p> <ul> <li>Un clic en un botón <code>submit</code> (el valor predeterminado) envía los datos del formulario a la página web definida por el atributo <code>action</code> del elemento <a href="/es/docs/Web/HTML/Element/form"><code><form></code></a>.</li> <li>Un clic en un botón <code>reset</code> restablece de inmediato todos los controles de formulario a su valor predeterminado. Desde el punto de vista de UX, esto se considera una mala práctica, por lo que debes evitar usar este tipo de botones a menos que realmente tengas una buena razón para incluirlos.</li> <li>Un clic en un botón <code>button</code> no hace... ¡nada! Eso suena tonto, pero es muy útil para crear botones personalizados: puedes definir su función con JavaScript.</li> </ul> <div class="notecard note"> <p><strong>Nota:</strong> También puedes usar el elemento <a href="/es/docs/Web/HTML/Element/input"><code><input></code></a> con el atributo <code>type</code> correspondiente para generar un botón, por ejemplo <code><input type="submit"></code>. La ventaja principal del elemento <a href="/es/docs/Web/HTML/Element/button"><code><button></code></a> es que el elemento <a href="/es/docs/Web/HTML/Element/input"><code><input></code></a> solo permite texto sin formato en su etiqueta, mientras que el elemento <a href="/es/docs/Web/HTML/Element/button"><code><button></code></a> permite contenido HTML completo, lo que permite generar botones creativos más complejos.</p> </div></div></section><section aria-labelledby="aplicar_estilo_básico_a_un_formulario"><h2 id="aplicar_estilo_básico_a_un_formulario"><a href="#aplicar_estilo_básico_a_un_formulario">Aplicar estilo básico a un formulario</a></h2><div class="section-content"><p>Ahora que has terminado de escribir el código HTML de tu formulario, guárdalo y observa lo que ocurre en un navegador. Por ahora, se verá bastante feo.</p> <div class="notecard note"> <p><strong>Nota:</strong> Si crees que no has escrito bien el código HTML, compáralo con nuestro ejemplo final: véase <a href="https://github.com/mdn/learning-area/blob/master/html/forms/your-first-HTML-form/first-form.html" class="external" target="_blank">first-form.html</a> (<a href="https://mdn.github.io/learning-area/html/forms/your-first-HTML-form/first-form.html" class="external" target="_blank">ver en vivo</a>).</p> </div> <p>Resulta notablemente difícil aplicar estilo a los formularios. Está más allá del alcance de este artículo enseñarte cómo aplicar estilo a los formularios en detalle, por lo que por el momento solo vamos a exponer cómo añadir un poco de CSS para que se vea un poco bien.</p> <p>En primer lugar, añade un elemento <a href="/es/docs/Web/HTML/Element/style"><code><style></code></a> a tu página, dentro de la cabecera del HTML. Debe quedar así:</p> <div class="code-example"><div class="example-header"><span class="language-name">html</span></div><pre class="brush: html notranslate"><code><style></style> </code></pre></div> <p>Dentro de las etiquetas <code>style</code>, añade el código CSS siguiente:</p> <div class="code-example"><div class="example-header"><span class="language-name">css</span></div><pre class="brush: css notranslate"><code>form { /* Centrar el formulario en la página */ margin: 0 auto; width: 400px; /* Esquema del formulario */ padding: 1em; border: 1px solid #ccc; border-radius: 1em; } ul { list-style: none; padding: 0; margin: 0; } form li + li { margin-top: 1em; } label { /* Tamaño y alineación uniforme */ display: inline-block; width: 90px; text-align: right; } input, textarea { /* Para asegurarse de que todos los campos de texto tienen la misma configuración de letra Por defecto, las áreas de texto tienen un tipo de letra monoespaciada */ font: 1em sans-serif; /* Tamaño uniforme del campo de texto */ width: 300px; box-sizing: border-box; /* Hacer coincidir los bordes del campo del formulario */ border: 1px solid #999; } input:focus, textarea:focus { /* Destacado adicional para elementos que tienen el cursor */ border-color: #000; } textarea { /* Alinear los campos de texto multilínea con sus etiquetas */ vertical-align: top; /* Proporcionar espacio para escribir texto */ height: 5em; } .button { /* Alinear los botones con los campos de texto */ padding-left: 90px; /* mismo tamaño que los elementos de la etiqueta */ } button { /* Este margen adicional representa aproximadamente el mismo espacio que el espacio entre las etiquetas y sus campos de texto */ margin-left: 0.5em; } </code></pre></div> <p>Guarda y vuelve a cargar, y observa que tu formulario presenta un aspecto mucho menos feo.</p> <div class="notecard note"> <p><strong>Nota:</strong> Puedes encontrar nuestra versión en GitHub en <a href="https://github.com/mdn/learning-area/blob/master/html/forms/your-first-HTML-form/first-form-styled.html" class="external" target="_blank">first-form-styled.html</a> (<a href="https://mdn.github.io/learning-area/html/forms/your-first-HTML-form/first-form-styled.html" class="external" target="_blank">ver en vivo</a>).</p> </div></div></section><section aria-labelledby="enviar_los_datos_del_formulario_a_un_servidor_web"><h2 id="enviar_los_datos_del_formulario_a_un_servidor_web"><a href="#enviar_los_datos_del_formulario_a_un_servidor_web">Enviar los datos del formulario a un servidor web</a></h2><div class="section-content"><p>La última parte, y quizás la más complicada, es manejar los datos del formulario en el lado del servidor. El elemento <a href="/es/docs/Web/HTML/Element/form"><code><form></code></a> define dónde y cómo enviar los datos gracias a los atributos <a href="/es/docs/Web/HTML/Element/form#action"><code>action</code></a> y <a href="/es/docs/Web/HTML/Element/form#method"><code>method</code></a>.</p> <p>Proporcionamos un nombre (<code>name</code>) a cada control de formulario. Los nombres son importantes tanto en el lado del cliente como del servidor; le dicen al navegador qué nombre debe dar a cada dato y, en el lado del servidor, dejan que el servidor maneje cada dato por su nombre. Los datos del formulario se envían al servidor como pares de nombre/valor.</p> <p>Para poner nombre a los diversos datos que se introducen en un formulario, debes usar el atributo <code>name</code> en cada control de formulario que recopila un dato específico. Veamos de nuevo algunos de nuestros códigos de formulario:</p> <div class="code-example"><div class="example-header"><span class="language-name">html</span></div><pre class="brush: html notranslate"><code><form action="/my-handling-form-page" method="post"> <ul> <li> <label for="name">Nombre:</label> <input type="text" id="name" name="user_name" /> </li> <li> <label for="mail">Correo electrónico:</label> <input type="email" id="mail" name="user_email" /> </li> <li> <label for="msg">Mensaje:</label> <textarea id="msg" name="user_message"></textarea> </li> ... </ul> </form> </code></pre></div> <p>En nuestro ejemplo, el formulario envía tres datos denominados «<code>user_name</code>», «<code>user_email</code>» y «<code>user_message</code>». Esos datos se envían a la URL «<code>/my-handling-form-page</code>» utilizando el método <a href="/es/docs/Web/HTTP/Methods/POST"><code>post</code> de HTTP</a>.</p> <p>En el lado del servidor, la secuencia de comandos de la URL «<code>/my-handling-form-page</code>» recibe los datos como una lista de tres elementos clave/valor contenidos en la solicitud HTTP. La forma en que este script maneja esos datos depende de ti. Cada lenguaje de servidor (PHP, Python, Ruby, Java, C#, etc.) tiene su propio mecanismo de manipulación de datos de formulario. No profundizaremos sobre el tema en esta guía, pero si deseas obtener más información, proporcionamos algunos ejemplos en nuestro artículo <a href="/es/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data">Enviar los datos de un formulario</a> que encontrarás más adelante.</p></div></section><section aria-labelledby="resumen"><h2 id="resumen"><a href="#resumen">Resumen</a></h2><div class="section-content"><p>¡Enhorabuena!, has creado tu primer formulario web. Debería verse así:</p> <div class="code-example"><pre class="brush: html hidden notranslate"><code><form action="/my-handling-form-page" method="post"> <div> <label for="name">Nombre:</label> <input type="text" id="name" name="user_name" /> </div> <div> <label for="mail">Correo electrónico:</label> <input type="email" id="mail" name="user_email" /> </div> <div> <label for="msg">Mensaje:</label> <textarea id="msg" name="user_message"></textarea> </div> <div class="button"> <button type="submit">Envia tu mensaje</button> </div> </form> </code></pre></div> <div class="code-example"><pre class="brush: css hidden notranslate"><code>form { /* Just to center the form on the page */ margin: 0 auto; width: 400px; /* To see the limits of the form */ padding: 1em; border: 1px solid #ccc; border-radius: 1em; } div + div { margin-top: 1em; } label { /* To make sure that all label have the same size and are properly align */ display: inline-block; width: 90px; text-align: right; } input, textarea { /* To make sure that all text field have the same font settings By default, textarea are set with a monospace font */ font: 1em sans-serif; /* To give the same size to all text field */ width: 300px; -moz-box-sizing: border-box; box-sizing: border-box; /* To harmonize the look & feel of text field border */ border: 1px solid #999; } input:focus, textarea:focus { /* To give a little highlight on active elements */ border-color: #000; } textarea { /* To properly align multiline text field with their label */ vertical-align: top; /* To give enough room to type some text */ height: 5em; /* To allow users to resize any textarea vertically It works only on Chrome, Firefox and Safari */ resize: vertical; } .button { /* To position the buttons to the same position of the text fields */ padding-left: 90px; /* same size as the label elements */ } button { /* This extra margin represent the same space as the space between the labels and their text fields */ margin-left: 0.5em; } </code></pre></div> <p>must be provided</p> <p>Pero esto es solo el comienzo: ahora ha llegado el momento de profundizar en el tema. Los formularios tienen mucho más potencial de lo que hemos visto aquí y los artículos siguientes de este módulo te ayudarán a dominarlo.</p> <ul class="prev-next"><li><a class="button secondary" href="/es/docs/Learn_web_development/Extensions/Forms"><span class="button-wrap"> Overview: Pilares de los formularios web</span></a></li><li><a class="button secondary" href="/es/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form"><span class="button-wrap"> Siguiente </span></a></li></ul></div></section><section aria-labelledby="temas_avanzados"><h3 id="temas_avanzados"><a href="#temas_avanzados">Temas avanzados</a></h3><div class="section-content"><ul> <li><a href="/es/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls">Cómo construir controles de formulario personalizados</a></li> <li><a href="/en-US/docs/Learn_web_development/Extensions/Forms/Sending_forms_through_JavaScript" class="only-in-en-us">Enviar formularios a través de JavaScript</a></li> <li><a href="/en-US/docs/Learn_web_development/Extensions/Forms" class="only-in-en-us">Tabla de compatibilidad para las propiedades de los controles de formulario</a></li> </ul></div></section></article><aside class="article-footer"><div class="article-footer-inner"><div class="svg-container"><svg xmlns="http://www.w3.org/2000/svg" width="162" height="162" viewBox="0 0 162 162" fill="none" role="none"><mask id="b" fill="#fff"><path d="M97.203 47.04c8.113-7.886 18.004-13.871 28.906-17.492a78 78 0 0 1 33.969-3.39c11.443 1.39 22.401 5.295 32.024 11.411s17.656 14.28 23.476 23.86c5.819 9.579 9.269 20.318 10.083 31.385a69.85 69.85 0 0 1-5.387 32.44c-4.358 10.272-11.115 19.443-19.747 26.801-8.632 7.359-18.908 12.709-30.034 15.637l-6.17-21.698c7.666-2.017 14.746-5.703 20.694-10.773 5.948-5.071 10.603-11.389 13.606-18.467a48.14 48.14 0 0 0 3.712-22.352c-.561-7.625-2.938-15.025-6.948-21.625s-9.544-12.226-16.175-16.44-14.181-6.904-22.065-7.863a53.75 53.75 0 0 0-23.405 2.336c-7.513 2.495-14.327 6.62-19.918 12.053z"></path></mask><path stroke="url(#a)" stroke-dasharray="6, 6" stroke-width="2" d="M97.203 47.04c8.113-7.886 18.004-13.871 28.906-17.492a78 78 0 0 1 33.969-3.39c11.443 1.39 22.401 5.295 32.024 11.411s17.656 14.28 23.476 23.86c5.819 9.579 9.269 20.318 10.083 31.385a69.85 69.85 0 0 1-5.387 32.44c-4.358 10.272-11.115 19.443-19.747 26.801-8.632 7.359-18.908 12.709-30.034 15.637l-6.17-21.698c7.666-2.017 14.746-5.703 20.694-10.773 5.948-5.071 10.603-11.389 13.606-18.467a48.14 48.14 0 0 0 3.712-22.352c-.561-7.625-2.938-15.025-6.948-21.625s-9.544-12.226-16.175-16.44-14.181-6.904-22.065-7.863a53.75 53.75 0 0 0-23.405 2.336c-7.513 2.495-14.327 6.62-19.918 12.053z" mask="url(#b)" style="stroke:url(#a)" transform="translate(-63.992 -25.587)"></path><ellipse cx="8.066" cy="111.597" fill="var(--background-tertiary)" rx="53.677" ry="53.699" transform="matrix(.71707 -.697 .7243 .6895 0 0)"></ellipse><g clip-path="url(#c)" transform="translate(-63.992 -25.587)"><path fill="#9abff5" d="m144.256 137.379 32.906 12.434a4.41 4.41 0 0 1 2.559 5.667l-9.326 24.679a4.41 4.41 0 0 1-5.667 2.559l-8.226-3.108-2.332 6.17c-.466 1.233-.375 1.883-1.609 1.417l-2.253-.527c-.411-.155-.95-.594-1.206-1.161l-4.734-10.484-12.545-4.741a4.41 4.41 0 0 1-2.559-5.667l9.325-24.679a4.41 4.41 0 0 1 5.667-2.559m9.961 29.617 8.227 3.108 3.264-8.638-.498-6.768-4.113-1.555.548 7.258-4.319-1.632zm-12.339-4.663 8.226 3.108 3.264-8.637-.498-6.769-4.113-1.554.548 7.257-4.319-1.632z"></path></g><g clip-path="url(#d)" transform="translate(-63.992 -25.587)"><path fill="#81b0f3" d="M135.35 60.136 86.67 41.654c-3.346-1.27-7.124.428-8.394 3.775L64.414 81.938c-1.27 3.347.428 7.125 3.774 8.395l12.17 4.62-3.465 9.128c-.693 1.826-1.432 2.457.394 3.15l3.014 1.625c.609.231 1.637.274 2.477-.104l15.53-6.983 18.56 7.047c3.346 1.27 7.124-.428 8.395-3.775l13.862-36.51c1.27-3.346-.428-7.124-3.775-8.395M95.261 83.207l-12.17-4.62 4.852-12.779 7.19-7.017 6.085 2.31-7.725 7.51 6.389 2.426zm18.255 6.93-12.17-4.62 4.852-12.778 7.189-7.017 6.085 2.31-7.725 7.51 6.39 2.426z"></path></g><defs><clipPath id="c"><path fill="#fff" d="m198.638 146.586-65.056-24.583-24.583 65.057 65.056 24.582z"></path></clipPath><clipPath id="d"><path fill="#fff" d="m66.438 14.055 96.242 36.54-36.54 96.243-96.243-36.54z"></path></clipPath><linearGradient id="a" x1="97.203" x2="199.995" y1="47.04" y2="152.793" gradientUnits="userSpaceOnUse"><stop stop-color="#086DFC"></stop><stop offset="0.246" stop-color="#2C81FA"></stop><stop offset="0.516" stop-color="#5497F8"></stop><stop offset="0.821" stop-color="#80B0F6"></stop><stop offset="1" stop-color="#9ABFF5"></stop></linearGradient></defs></svg></div><h2>Help improve MDN</h2><fieldset class="feedback"><label>Was this page helpful to you?</label><div class="button-container"><button type="button" class="button primary has-icon yes"><span class="button-wrap"><span class="icon icon-thumbs-up "></span>Yes</span></button><button type="button" class="button primary has-icon no"><span class="button-wrap"><span class="icon icon-thumbs-down "></span>No</span></button></div></fieldset><a class="contribute" href="https://github.com/mdn/translated-content/blob/main/CONTRIBUTING.md" title="This will take you to our contribution guidelines on GitHub." target="_blank" rel="noopener noreferrer">Learn how to contribute</a>.<p class="last-modified-date">This page was last modified on<!-- --> <time dateTime="2024-12-27T01:30:25.000Z">27 dic 2024</time> by<!-- --> <a href="/es/docs/Learn_web_development/Extensions/Forms/Your_first_form/contributors.txt" rel="nofollow">MDN contributors</a>.</p><div id="on-github" class="on-github"><a href="https://github.com/mdn/translated-content/blob/main/files/es/learn_web_development/extensions/forms/your_first_form/index.md?plain=1" title="Folder: es/learn_web_development/extensions/forms/your_first_form (Opens in a new tab)" target="_blank" rel="noopener noreferrer">View this page on GitHub</a> <!-- -->•<!-- --> <a href="https://github.com/mdn/translated-content/issues/new?template=page-report-es.yml&mdn-url=https%3A%2F%2Fdeveloper.mozilla.org%2Fes%2Fdocs%2FLearn_web_development%2FExtensions%2FForms%2FYour_first_form&metadata=%3C%21--+Do+not+make+changes+below+this+line+--%3E%0A%3Cdetails%3E%0A%3Csummary%3EPage+report+details%3C%2Fsummary%3E%0A%0A*+Folder%3A+%60es%2Flearn_web_development%2Fextensions%2Fforms%2Fyour_first_form%60%0A*+MDN+URL%3A+https%3A%2F%2Fdeveloper.mozilla.org%2Fes%2Fdocs%2FLearn_web_development%2FExtensions%2FForms%2FYour_first_form%0A*+GitHub+URL%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Ftranslated-content%2Fblob%2Fmain%2Ffiles%2Fes%2Flearn_web_development%2Fextensions%2Fforms%2Fyour_first_form%2Findex.md%0A*+Last+commit%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Ftranslated-content%2Fcommit%2Ff680575848908ce31c07fb90c5687b5b81c302ff%0A*+Document+last+modified%3A+2024-12-27T01%3A30%3A25.000Z%0A%0A%3C%2Fdetails%3E" title="This will take you to GitHub to file a new issue." target="_blank" rel="noopener noreferrer">Report a problem with this content</a></div></div></aside></main></div></div><footer id="nav-footer" class="page-footer"><div class="page-footer-grid"><div class="page-footer-logo-col"><a href="/" class="mdn-footer-logo" aria-label="MDN homepage"><svg width="48" height="17" viewBox="0 0 48 17" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="mdn-footer-logo-svg">MDN logo</title><path d="M20.04 16.512H15.504V10.416C15.504 9.488 15.344 8.824 15.024 8.424C14.72 8.024 14.264 7.824 13.656 7.824C12.92 7.824 12.384 8.064 12.048 8.544C11.728 9.024 11.568 9.64 11.568 10.392V14.184H13.008V16.512H8.472V10.416C8.472 9.488 8.312 8.824 7.992 8.424C7.688 8.024 7.232 7.824 6.624 7.824C5.872 7.824 5.336 8.064 5.016 8.544C4.696 9.024 4.536 9.64 4.536 10.392V14.184H6.6V16.512H0V14.184H1.44V8.04H0.024V5.688H4.536V7.32C5.224 6.088 6.32 5.472 7.824 5.472C8.608 5.472 9.328 5.664 9.984 6.048C10.64 6.432 11.096 7.016 11.352 7.8C11.992 6.248 13.168 5.472 14.88 5.472C15.856 5.472 16.72 5.776 17.472 6.384C18.224 6.992 18.6 7.936 18.6 9.216V14.184H20.04V16.512Z" fill="currentColor"></path><path d="M33.6714 16.512H29.1354V14.496C28.8314 15.12 28.3834 15.656 27.7914 16.104C27.1994 16.536 26.4154 16.752 25.4394 16.752C24.0154 16.752 22.8954 16.264 22.0794 15.288C21.2634 14.312 20.8554 12.984 20.8554 11.304C20.8554 9.688 21.2554 8.312 22.0554 7.176C22.8554 6.04 24.0634 5.472 25.6794 5.472C26.5594 5.472 27.2794 5.648 27.8394 6C28.3994 6.352 28.8314 6.8 29.1354 7.344V2.352H26.9754V0H32.2314V14.184H33.6714V16.512ZM29.1354 11.04V10.776C29.1354 9.88 28.8954 9.184 28.4154 8.688C27.9514 8.176 27.3674 7.92 26.6634 7.92C25.9754 7.92 25.3674 8.176 24.8394 8.688C24.3274 9.2 24.0714 10.008 24.0714 11.112C24.0714 12.152 24.3114 12.944 24.7914 13.488C25.2714 14.032 25.8394 14.304 26.4954 14.304C27.3114 14.304 27.9514 13.96 28.4154 13.272C28.8954 12.584 29.1354 11.84 29.1354 11.04Z" fill="currentColor"></path><path d="M47.9589 16.512H41.9829V14.184H43.4229V10.416C43.4229 9.488 43.2629 8.824 42.9429 8.424C42.6389 8.024 42.1829 7.824 41.5749 7.824C40.8389 7.824 40.2709 8.056 39.8709 8.52C39.4709 8.968 39.2629 9.56 39.2469 10.296V14.184H40.6869V16.512H34.7109V14.184H36.1509V8.04H34.5909V5.688H39.2469V7.344C39.9669 6.096 41.1269 5.472 42.7269 5.472C43.7509 5.472 44.6389 5.776 45.3909 6.384C46.1429 6.992 46.5189 7.936 46.5189 9.216V14.184H47.9589V16.512Z" fill="currentColor"></path></svg></a><p>Your blueprint for a better internet.</p><ul class="social-icons"><li><a href="https://mastodon.social/@mdn" target="_blank" rel="me noopener noreferrer"><span class="icon icon-mastodon"></span><span class="visually-hidden">MDN on Mastodon</span></a></li><li><a href="https://twitter.com/mozdevnet" target="_blank" rel="noopener noreferrer"><span class="icon icon-twitter-x"></span><span class="visually-hidden">MDN on X (formerly Twitter)</span></a></li><li><a href="https://github.com/mdn/" target="_blank" rel="noopener noreferrer"><span class="icon icon-github-mark-small"></span><span class="visually-hidden">MDN on GitHub</span></a></li><li><a href="/en-US/blog/rss.xml" target="_blank"><span class="icon icon-feed"></span><span class="visually-hidden">MDN Blog RSS Feed</span></a></li></ul></div><div class="page-footer-nav-col-1"><h2 class="footer-nav-heading">MDN</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a href="/en-US/about">About</a></li><li class="footer-nav-item"><a href="/en-US/blog/">Blog</a></li><li class="footer-nav-item"><a href="https://www.mozilla.org/en-US/careers/listings/?team=ProdOps" target="_blank" rel="noopener noreferrer">Careers</a></li><li class="footer-nav-item"><a href="/en-US/advertising">Advertise with us</a></li></ul></div><div class="page-footer-nav-col-2"><h2 class="footer-nav-heading">Support</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="https://support.mozilla.org/products/mdn-plus">Product help</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/es/docs/MDN/Community/Issues">Report an issue</a></li></ul></div><div class="page-footer-nav-col-3"><h2 class="footer-nav-heading">Our communities</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="/en-US/community">MDN Community</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="https://discourse.mozilla.org/c/mdn/236" target="_blank" rel="noopener noreferrer">MDN Forum</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/discord" target="_blank" rel="noopener noreferrer">MDN Chat</a></li></ul></div><div class="page-footer-nav-col-4"><h2 class="footer-nav-heading">Developers</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="/es/docs/Web">Web Technologies</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/es/docs/Learn">Learn Web Development</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/es/plus">MDN Plus</a></li><li class="footer-nav-item"><a href="https://hacks.mozilla.org/" target="_blank" rel="noopener noreferrer">Hacks Blog</a></li></ul></div><div class="page-footer-moz"><a href="https://www.mozilla.org/" class="footer-moz-logo-link" target="_blank" rel="noopener noreferrer"><svg xmlns="http://www.w3.org/2000/svg" width="137" height="32" fill="none" viewBox="0 0 267.431 62.607"><path fill="currentColor" d="m13.913 23.056 5.33 25.356h2.195l5.33-25.356h14.267v38.976h-7.578V29.694h-2.194l-7.264 32.337h-7.343L9.418 29.694H7.223v32.337H-.354V23.056Zm47.137 9.123c9.12 0 14.423 5.385 14.423 15.214s-5.33 15.214-14.423 15.214c-9.12 0-14.423-5.385-14.423-15.214 0-9.855 5.304-15.214 14.423-15.214m0 24.363c4.285 0 6.428-2.196 6.428-7.032v-4.287c0-4.836-2.143-7.032-6.428-7.032s-6.428 2.196-6.428 7.032v4.287c0 4.836 2.143 7.032 6.428 7.032m18.473-.157 15.47-18.01h-15.26v-5.647h24.352v5.646L88.616 56.385h15.704v5.646H79.523Zm29.318-23.657h11.183V62.03h-7.578V38.375h-3.632v-5.646zm3.605-9.672h7.578v5.646h-7.578zm13.17 0h11.21v38.976h-7.578v-33.33h-3.632zm16.801 0H153.6v38.976h-7.577v-33.33h-3.632v-5.646zm29.03 9.123c4.442 0 7.394 2.143 8.231 5.881h2.194v-5.332h9.276v5.646h-3.632v18.011h3.632v5.646h-4.442c-3.135 0-4.834-1.699-4.834-4.836V56.7h-2.194c-.81 3.738-3.789 5.881-8.23 5.881-6.978 0-11.916-5.829-11.916-15.214 0-9.384 4.938-15.187 11.915-15.187m2.3 24.363c4.284 0 6.192-2.196 6.192-7.032v-4.287c0-4.836-1.908-7.032-6.193-7.032-4.18 0-6.193 2.196-6.193 7.032v4.287c0 4.836 2.012 7.032 6.193 7.032m48.34 5.489h-7.577V0h7.577zm6.585-29.643h32.165v-2.196l-21.295-7.634v-6.143l21.295-7.633V6.588h-25.345V0h32.165v12.522l-17.35 5.881V20.6l17.35 5.882v12.521h-38.985zm0-25.801h6.794v6.796h-6.794z"></path></svg></a><ul class="footer-moz-list"><li class="footer-moz-item"><a href="https://www.mozilla.org/privacy/websites/" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Website Privacy Notice</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/privacy/websites/#cookies" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Cookies</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/about/legal/terms/mozilla" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Legal</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/about/governance/policies/participation/" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Community Participation Guidelines</a></li></ul></div><div class="page-footer-legal"><p id="license" class="page-footer-legal-text">Visit<!-- --> <a href="https://www.mozilla.org" target="_blank" rel="noopener noreferrer">Mozilla Corporation’s</a> <!-- -->not-for-profit parent, the<!-- --> <a target="_blank" rel="noopener noreferrer" href="https://foundation.mozilla.org/">Mozilla Foundation</a>.<br/>Portions of this content are ©1998–<!-- -->2025<!-- --> by individual mozilla.org contributors. Content available under<!-- --> <a href="/es/docs/MDN/Writing_guidelines/Attrib_copyright_license">a Creative Commons license</a>.</p></div></div></footer></div><script type="application/json" id="hydration">{"url":"/es/docs/Learn_web_development/Extensions/Forms/Your_first_form","doc":{"body":[{"type":"prose","value":{"id":null,"title":null,"isH3":false,"content":"<ul class=\"prev-next\"><li><a class=\"button secondary\" href=\"/es/docs/Learn_web_development/Extensions/Forms\"><span class=\"button-wrap\"> Overview: Pilares de los formularios web</span></a></li><li><a class=\"button secondary\" href=\"/es/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form\"><span class=\"button-wrap\"> Siguiente </span></a></li></ul>\n<p>El primer artículo de nuestra serie te proporciona una primera experiencia de creación de un formulario web, que incluye diseñar un formulario sencillo con controles de formulario adecuados y otros elementos HTML, añadir un poco de estilo muy simple con CSS y describir cómo se envían los datos a un servidor. Ampliaremos cada uno de estos subtemas más adelante.</p>\n<figure class=\"table-container\"><table>\n <tbody>\n <tr>\n <th scope=\"row\">Prerrequisitos:</th>\n <td>\n Conocimientos básicos de informática y de\n <a href=\"/es/docs/conflicting/Learn_web_development/Core/Structuring_content\">lenguaje HTML</a>.\n </td>\n </tr>\n <tr>\n <th scope=\"row\">Objetivo:</th>\n <td>\n Familiarizarse con los formularios web, para qué se usan, cómo\n diseñarlos y qué elementos HTML básicos vas a necesitar para casos\n sencillos.\n </td>\n </tr>\n </tbody>\n</table></figure>"}},{"type":"prose","value":{"id":"¿qué_son_los_formularios_web","title":"¿Qué son los formularios web?","isH3":false,"content":"<p>Los <strong>formularios web</strong> son uno de los principales puntos de interacción entre un usuario y un sitio web o aplicación. Los formularios permiten a los usuarios la introducción de datos, que generalmente se envían a un servidor web para su procesamiento y almacenamiento (consulta <a href=\"/es/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data\">Enviar los datos de un formulario</a> más adelante en el módulo), o se usan en el lado del cliente para provocar de alguna manera una actualización inmediata de la interfaz (por ejemplo, se añade otro elemento a una lista, o se muestra u oculta una función de interfaz de usuario).</p>\n<p>El HTML de un <strong>formulario web</strong> está compuesto por uno o más <strong>controles de formulario</strong> (a veces llamados <strong>widgets</strong>), además de algunos elementos adicionales que ayudan a estructurar el formulario general; a menudo se los conoce como <strong>formularios HTML</strong>. Los controles pueden ser campos de texto de una o varias líneas, cajas desplegables, botones, casillas de verificación o botones de opción, y se crean principalmente con el elemento <a href=\"/es/docs/Web/HTML/Element/input\"><code><input></code></a>, aunque hay algunos otros elementos que también hay que conocer.</p>\n<p>Los controles de formulario también se pueden programar para forzar la introducción de formatos o valores específicos (<strong>validación de formulario</strong>), y se combinan con etiquetas de texto que describen su propósito para los usuarios con y sin discapacidad visual.</p>"}},{"type":"prose","value":{"id":"diseñar_tu_formulario","title":"Diseñar tu formulario","isH3":false,"content":"<p>Antes de comenzar a escribir código, siempre es mejor dar un paso atrás y tomarte el tiempo necesario para pensar en tu formulario. Diseñar una maqueta rápida te ayudará a definir el conjunto de datos adecuado que deseas pedirle al usuario que introduzca. Desde el punto de vista de la experiencia del usuario (UX), es importante recordar que cuanto más grande es tu formulario, más te arriesgas a frustrar a las personas y perder usuarios. Tiene que ser simple y conciso: solicita solo los datos que necesitas.</p>\n<p>Diseñar formularios es un paso importante cuando creas un sitio web o una aplicación. Va más allá del alcance de este artículo exponer la experiencia de usuario de los formularios, pero si deseas profundizar en ese tema, puedes leer los artículos siguientes:</p>\n<ul>\n<li>Smashing Magazine tiene algunos <a href=\"https://www.smashingmagazine.com/2018/08/ux-html5-mobile-form-part-1/\" class=\"external\" target=\"_blank\">artículos muy buenos sobre formularios UX</a>, incluido el artículo —antiguo pero relevante— <a href=\"https://www.smashingmagazine.com/2011/11/extensive-guide-web-form-usability/\" class=\"external\" target=\"_blank\">An Extensive Guide To Web Form Usability</a> [Amplia guía de usabilidad para formularios web].</li>\n<li>UXMatters también es un recurso que da buenos consejos, desde <a href=\"http://www.uxmatters.com/mt/archives/2012/05/7-basic-best-practices-for-buttons.php\" class=\"external\" target=\"_blank\">buenas prácticas básicas</a> hasta cuestiones complejas como los <a href=\"http://www.uxmatters.com/mt/archives/2010/03/pagination-in-web-forms-evaluating-the-effectiveness-of-web-forms.php\" class=\"external\" target=\"_blank\">formularios de varias páginas</a>.</li>\n</ul>\n<p>En este artículo, vamos a crear un formulario de contacto sencillo. Hagamos un esbozo.</p>\n<p><img src=\"/es/docs/Learn_web_development/Extensions/Forms/Your_first_form/form-sketch-low.jpg\" alt=\"Esbozo aproximado del formulario que vamos a construir\" width=\"400\" height=\"352\" loading=\"lazy\"></p>\n<p>Nuestro formulario va a tener tres campos de texto y un botón. Le pedimos al usuario su nombre, su correo electrónico y el mensaje que desea enviar. Al pulsar el botón sus datos se enviarán a un servidor web.</p>"}},{"type":"prose","value":{"id":"aprendizaje_activo_la_implementación_de_nuestro_formulario_html","title":"Aprendizaje activo: La implementación de nuestro formulario HTML","isH3":false,"content":"<p>De acuerdo, intentemos crear el HTML para nuestro formulario. Vamos a utilizar los elementos HTML siguientes: <a href=\"/es/docs/Web/HTML/Element/form\"><code><form></code></a>, <a href=\"/es/docs/Web/HTML/Element/label\"><code><label></code></a>, <a href=\"/es/docs/Web/HTML/Element/input\"><code><input></code></a>, <a href=\"/es/docs/Web/HTML/Element/textarea\"><code><textarea></code></a> y <a href=\"/es/docs/Web/HTML/Element/button\"><code><button></code></a>.</p>\n<p>Antes de continuar, haz una copia local de nuestra <a href=\"https://github.com/mdn/learning-area/blob/master/html/introduction-to-html/getting-started/index.html\" class=\"external\" target=\"_blank\">plantilla HTML simple</a>: introduce aquí tu formulario HTML.</p>"}},{"type":"prose","value":{"id":"el_elemento_form","title":"El elemento <code>form</code>","isH3":true,"content":"<p>Todos los formularios comienzan con un elemento <a href=\"/es/docs/Web/HTML/Element/form\"><code><form></code></a>, como este:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">html</span></div><pre class=\"brush: html notranslate\"><code><form action=\"/my-handling-form-page\" method=\"post\"></form>\n</code></pre></div>\n<p>Este elemento define formalmente un formulario. Es un elemento contenedor, como un elemento <a href=\"/es/docs/Web/HTML/Element/section\"><code><section></code></a> o <a href=\"/es/docs/Web/HTML/Element/footer\"><code><footer></code></a>, pero específico para contener formularios; también admite algunos atributos específicos para la configuración de la forma en que se comporta el formulario. Todos sus atributos son opcionales, pero es una práctica estándar establecer siempre al menos los atributos <a href=\"/es/docs/Web/HTML/Element/form#action\"><code>action</code></a> y <a href=\"/es/docs/Web/HTML/Element/form#method\"><code>method</code></a>:</p>\n<ul>\n<li>El atributo <code>action</code> define la ubicación (URL) donde se envían los datos que el formulario ha recopilado cuando se validan.</li>\n<li>El atributo <code>method</code> define con qué método HTTP se envían los datos (generalmente <code>get</code> o <code>post</code>).</li>\n</ul>\n<div class=\"notecard note\">\n<p><strong>Nota:</strong>\nVeremos cómo funcionan esos atributos en nuestro artículo <a href=\"/es/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data\">Enviar los datos de un formulario</a> que encontrarás más adelante.</p>\n</div>\n<p>Por ahora, añade el elemento <a href=\"/es/docs/Web/HTML/Element/form\"><code><form></code></a> anterior a tu elemento HTML <a href=\"/es/docs/Web/HTML/Element/body\"><code><body></code></a>.</p>"}},{"type":"prose","value":{"id":"los_elementos_label_input_y_textarea","title":"Los elementos <code><label></code>, <code><input></code> y <code><textarea></code>","isH3":true,"content":"<p>Nuestro formulario de contacto no es complejo: la parte para la entrada de datos contiene tres campos de texto, cada uno con su elemento <a href=\"/es/docs/Web/HTML/Element/label\"><code><label></code></a> correspondiente:</p>\n<ul>\n<li>El campo de entrada para el nombre es un <a href=\"/es/docs/Web/HTML/Element/input/text\">campo de texto de una sola línea</a>.</li>\n<li>El campo de entrada para el correo electrónico es una <a href=\"/es/docs/Web/HTML/Element/input/email\">entrada de datos de tipo correo electrónico</a>: un campo de texto de una sola línea que acepta solo direcciones de correo electrónico.</li>\n<li>El campo de entrada para el mensaje es <a href=\"/es/docs/Web/HTML/Element/textarea\"><code><textarea></code></a>; un campo de texto multilínea.</li>\n</ul>\n<p>En términos de código HTML, para implementar estos controles de formulario necesitamos algo como lo siguiente:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">html</span></div><pre class=\"brush: html notranslate\"><code><form action=\"/my-handling-form-page\" method=\"post\">\n <ul>\n <li>\n <label for=\"name\">Nombre:</label>\n <input type=\"text\" id=\"name\" name=\"user_name\" />\n </li>\n <li>\n <label for=\"mail\">Correo electrónico:</label>\n <input type=\"email\" id=\"mail\" name=\"user_mail\" />\n </li>\n <li>\n <label for=\"msg\">Mensaje:</label>\n <textarea id=\"msg\" name=\"user_message\"></textarea>\n </li>\n </ul>\n</form>\n</code></pre></div>\n<p>Actualiza el código de tu formulario para que se vea como el anterior.</p>\n<p>Los elementos <a href=\"/es/docs/Web/HTML/Element/li\"><code><li></code></a> están ahí para estructurar nuestro código convenientemente y facilitar la aplicación de estilo (ver más adelante en el artículo). Por motivos de usabilidad y accesibilidad incluimos una etiqueta explícita para cada control de formulario. Ten en cuenta el uso del atributo <a href=\"/en-US/docs/Web/HTML/Attributes/for\" class=\"only-in-en-us\"><code>for</code></a> en todos los elementos <a href=\"/es/docs/Web/HTML/Element/label\"><code><label></code></a>, que toma como valor el <a href=\"/es/docs/Web/HTML/Global_attributes/id\"><code>id</code></a> del control de formulario con el que está asociado; así es como asocias un formulario con su etiqueta.</p>\n<p>Hacer esto presenta muchas ventajas porque la etiqueta está asociada al control del formulario y permite que los usuarios con ratón, panel táctil y dispositivos táctiles hagan clic en la etiqueta para activar el control correspondiente, y también proporciona accesibilidad con un nombre que los lectores de pantalla leen a sus usuarios. Encontrarás más detalles sobre las etiquetas de los formularios en <a href=\"/es/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form\">Cómo estructurar un formulario web</a>.</p>\n<p>En el elemento <a href=\"/es/docs/Web/HTML/Element/input\"><code><input></code></a>, el atributo más importante es <code>type</code>. Este atributo es muy importante porque define la forma en que el elemento <a href=\"/es/docs/Web/HTML/Element/input\"><code><input></code></a> aparece y se comporta. Encontrarás más información sobre esto en el artículo sobre <a href=\"/es/docs/Learn_web_development/Extensions/Forms/Basic_native_form_controls\">Controles de formularios nativos básicos</a> más adelante.</p>\n<ul>\n<li>En nuestro ejemplo sencillo, usamos el valor <a href=\"/es/docs/Web/HTML/Element/input/text\"><code><input/text></code></a> para la primera entrada, el valor predeterminado para este atributo. Representa un campo de texto básico de una sola línea que acepta cualquier tipo de entrada de texto.</li>\n<li>Para la segunda entrada, usamos el valor <a href=\"/es/docs/Web/HTML/Element/input/email\"><code><input/email></code></a>, que define un campo de texto de una sola línea que solo acepta una dirección de correo electrónico. Esto convierte un campo de texto básico en una especie de campo «inteligente» que efectúa algunas comprobaciones de validación de los datos que el usuario escribe. También hace que aparezca un diseño de teclado más apropiado para introducir direcciones de correo electrónico (por ejemplo, con un símbolo @ por defecto) en dispositivos con teclados dinámicos, como teléfonos inteligentes. Encontrarás más información sobre la validación de formularios en el artículo de <a href=\"/es/docs/Learn_web_development/Extensions/Forms/Form_validation\">Validación de formularios por parte del cliente</a> más adelante.</li>\n</ul>\n<p>Por último, pero no por ello menos importante, ten en cuenta la sintaxis de <code><input></code> en contraposición con la de <code><textarea></textarea></code>. Esta es una de las rarezas del HTML. La etiqueta <code><input></code> es un elemento vacío, lo que significa que no necesita una etiqueta de cierre. El elemento <a href=\"/es/docs/Web/HTML/Element/textarea\"><code><textarea></code></a> no es un elemento vacío, lo que significa que debe cerrarse con la etiqueta de cierre adecuada. Esto tiene un impacto en una característica específica de los formularios: el modo en que defines el valor predeterminado. Para definir el valor predeterminado de un elemento <a href=\"/es/docs/Web/HTML/Element/input\"><code><input></code></a>, debes usar el atributo <a href=\"/es/docs/Web/HTML/Element/input#value\"><code>value</code></a> de esta manera:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">html</span></div><pre class=\"brush: html notranslate\"><code><input type=\"text\" value=\"por defecto este elemento se llena con este texto\" />\n</code></pre></div>\n<p>Por otro lado, si deseas definir un valor predeterminado para un elemento <a href=\"/es/docs/Web/HTML/Element/textarea\"><code><textarea></code></a>, lo colocas entre las etiquetas de apertura y cierre del elemento <a href=\"/es/docs/Web/HTML/Element/textarea\"><code><textarea></code></a>, así:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">html</span></div><pre class=\"brush: html notranslate\"><code><textarea>\nPor defecto, este elemento contiene este texto\n</textarea>\n</code></pre></div>"}},{"type":"prose","value":{"id":"el_elemento_button","title":"El elemento <code>button</code>","isH3":true,"content":"<p>El marcado de nuestro formulario está casi completo; solo necesitamos añadir un botón para permitir que el usuario envíe sus datos una vez que haya completado el formulario. Esto se hace con el elemento <a href=\"/es/docs/Web/HTML/Element/button\"><code><button></code></a>; añade lo siguiente justo encima de la etiqueta de cierre <code></form></code>:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">html</span></div><pre class=\"brush: html notranslate\"><code><li class=\"button\">\n <button type=\"submit\">Envíe su mensaje</button>\n</li>\n</code></pre></div>\n<p>El elemento <a href=\"/es/docs/Web/HTML/Element/button\"><code><button></code></a> también acepta un atributo de <code>type</code>, que a su vez acepta uno de estos tres valores: <code>submit</code>, <code>reset</code> o <code>button</code>.</p>\n<ul>\n<li>Un clic en un botón <code>submit</code> (el valor predeterminado) envía los datos del formulario a la página web definida por el atributo <code>action</code> del elemento <a href=\"/es/docs/Web/HTML/Element/form\"><code><form></code></a>.</li>\n<li>Un clic en un botón <code>reset</code> restablece de inmediato todos los controles de formulario a su valor predeterminado. Desde el punto de vista de UX, esto se considera una mala práctica, por lo que debes evitar usar este tipo de botones a menos que realmente tengas una buena razón para incluirlos.</li>\n<li>Un clic en un botón <code>button</code> no hace... ¡nada! Eso suena tonto, pero es muy útil para crear botones personalizados: puedes definir su función con JavaScript.</li>\n</ul>\n<div class=\"notecard note\">\n<p><strong>Nota:</strong>\nTambién puedes usar el elemento <a href=\"/es/docs/Web/HTML/Element/input\"><code><input></code></a> con el atributo <code>type</code> correspondiente para generar un botón, por ejemplo <code><input type=\"submit\"></code>. La ventaja principal del elemento <a href=\"/es/docs/Web/HTML/Element/button\"><code><button></code></a> es que el elemento <a href=\"/es/docs/Web/HTML/Element/input\"><code><input></code></a> solo permite texto sin formato en su etiqueta, mientras que el elemento <a href=\"/es/docs/Web/HTML/Element/button\"><code><button></code></a> permite contenido HTML completo, lo que permite generar botones creativos más complejos.</p>\n</div>"}},{"type":"prose","value":{"id":"aplicar_estilo_básico_a_un_formulario","title":"Aplicar estilo básico a un formulario","isH3":false,"content":"<p>Ahora que has terminado de escribir el código HTML de tu formulario, guárdalo y observa lo que ocurre en un navegador. Por ahora, se verá bastante feo.</p>\n<div class=\"notecard note\">\n<p><strong>Nota:</strong>\nSi crees que no has escrito bien el código HTML, compáralo con nuestro ejemplo final: véase <a href=\"https://github.com/mdn/learning-area/blob/master/html/forms/your-first-HTML-form/first-form.html\" class=\"external\" target=\"_blank\">first-form.html</a> (<a href=\"https://mdn.github.io/learning-area/html/forms/your-first-HTML-form/first-form.html\" class=\"external\" target=\"_blank\">ver en vivo</a>).</p>\n</div>\n<p>Resulta notablemente difícil aplicar estilo a los formularios. Está más allá del alcance de este artículo enseñarte cómo aplicar estilo a los formularios en detalle, por lo que por el momento solo vamos a exponer cómo añadir un poco de CSS para que se vea un poco bien.</p>\n<p>En primer lugar, añade un elemento <a href=\"/es/docs/Web/HTML/Element/style\"><code><style></code></a> a tu página, dentro de la cabecera del HTML. Debe quedar así:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">html</span></div><pre class=\"brush: html notranslate\"><code><style></style>\n</code></pre></div>\n<p>Dentro de las etiquetas <code>style</code>, añade el código CSS siguiente:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">css</span></div><pre class=\"brush: css notranslate\"><code>form {\n /* Centrar el formulario en la página */\n margin: 0 auto;\n width: 400px;\n /* Esquema del formulario */\n padding: 1em;\n border: 1px solid #ccc;\n border-radius: 1em;\n}\n\nul {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\nform li + li {\n margin-top: 1em;\n}\n\nlabel {\n /* Tamaño y alineación uniforme */\n display: inline-block;\n width: 90px;\n text-align: right;\n}\n\ninput,\ntextarea {\n /* Para asegurarse de que todos los campos de texto tienen la misma configuración de letra\n Por defecto, las áreas de texto tienen un tipo de letra monoespaciada */\n font: 1em sans-serif;\n\n /* Tamaño uniforme del campo de texto */\n width: 300px;\n box-sizing: border-box;\n\n /* Hacer coincidir los bordes del campo del formulario */\n border: 1px solid #999;\n}\n\ninput:focus,\ntextarea:focus {\n /* Destacado adicional para elementos que tienen el cursor */\n border-color: #000;\n}\n\ntextarea {\n /* Alinear los campos de texto multilínea con sus etiquetas */\n vertical-align: top;\n\n /* Proporcionar espacio para escribir texto */\n height: 5em;\n}\n\n.button {\n /* Alinear los botones con los campos de texto */\n padding-left: 90px; /* mismo tamaño que los elementos de la etiqueta */\n}\n\nbutton {\n /* Este margen adicional representa aproximadamente el mismo espacio que el espacio\n entre las etiquetas y sus campos de texto */\n margin-left: 0.5em;\n}\n</code></pre></div>\n<p>Guarda y vuelve a cargar, y observa que tu formulario presenta un aspecto mucho menos feo.</p>\n<div class=\"notecard note\">\n<p><strong>Nota:</strong>\nPuedes encontrar nuestra versión en GitHub en <a href=\"https://github.com/mdn/learning-area/blob/master/html/forms/your-first-HTML-form/first-form-styled.html\" class=\"external\" target=\"_blank\">first-form-styled.html</a> (<a href=\"https://mdn.github.io/learning-area/html/forms/your-first-HTML-form/first-form-styled.html\" class=\"external\" target=\"_blank\">ver en vivo</a>).</p>\n</div>"}},{"type":"prose","value":{"id":"enviar_los_datos_del_formulario_a_un_servidor_web","title":"Enviar los datos del formulario a un servidor web","isH3":false,"content":"<p>La última parte, y quizás la más complicada, es manejar los datos del formulario en el lado del servidor. El elemento <a href=\"/es/docs/Web/HTML/Element/form\"><code><form></code></a> define dónde y cómo enviar los datos gracias a los atributos <a href=\"/es/docs/Web/HTML/Element/form#action\"><code>action</code></a> y <a href=\"/es/docs/Web/HTML/Element/form#method\"><code>method</code></a>.</p>\n<p>Proporcionamos un nombre (<code>name</code>) a cada control de formulario. Los nombres son importantes tanto en el lado del cliente como del servidor; le dicen al navegador qué nombre debe dar a cada dato y, en el lado del servidor, dejan que el servidor maneje cada dato por su nombre. Los datos del formulario se envían al servidor como pares de nombre/valor.</p>\n<p>Para poner nombre a los diversos datos que se introducen en un formulario, debes usar el atributo <code>name</code> en cada control de formulario que recopila un dato específico. Veamos de nuevo algunos de nuestros códigos de formulario:</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">html</span></div><pre class=\"brush: html notranslate\"><code><form action=\"/my-handling-form-page\" method=\"post\">\n <ul>\n <li>\n <label for=\"name\">Nombre:</label>\n <input type=\"text\" id=\"name\" name=\"user_name\" />\n </li>\n <li>\n <label for=\"mail\">Correo electrónico:</label>\n <input type=\"email\" id=\"mail\" name=\"user_email\" />\n </li>\n <li>\n <label for=\"msg\">Mensaje:</label>\n <textarea id=\"msg\" name=\"user_message\"></textarea>\n </li>\n\n ...\n </ul>\n</form>\n</code></pre></div>\n<p>En nuestro ejemplo, el formulario envía tres datos denominados «<code>user_name</code>», «<code>user_email</code>» y «<code>user_message</code>». Esos datos se envían a la URL «<code>/my-handling-form-page</code>» utilizando el método <a href=\"/es/docs/Web/HTTP/Methods/POST\"><code>post</code> de HTTP</a>.</p>\n<p>En el lado del servidor, la secuencia de comandos de la URL «<code>/my-handling-form-page</code>» recibe los datos como una lista de tres elementos clave/valor contenidos en la solicitud HTTP. La forma en que este script maneja esos datos depende de ti. Cada lenguaje de servidor (PHP, Python, Ruby, Java, C#, etc.) tiene su propio mecanismo de manipulación de datos de formulario. No profundizaremos sobre el tema en esta guía, pero si deseas obtener más información, proporcionamos algunos ejemplos en nuestro artículo <a href=\"/es/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data\">Enviar los datos de un formulario</a> que encontrarás más adelante.</p>"}},{"type":"prose","value":{"id":"resumen","title":"Resumen","isH3":false,"content":"<p>¡Enhorabuena!, has creado tu primer formulario web. Debería verse así:</p>\n<div class=\"code-example\"><pre class=\"brush: html hidden notranslate\"><code><form action=\"/my-handling-form-page\" method=\"post\">\n <div>\n <label for=\"name\">Nombre:</label>\n <input type=\"text\" id=\"name\" name=\"user_name\" />\n </div>\n <div>\n <label for=\"mail\">Correo electrónico:</label>\n <input type=\"email\" id=\"mail\" name=\"user_email\" />\n </div>\n <div>\n <label for=\"msg\">Mensaje:</label>\n <textarea id=\"msg\" name=\"user_message\"></textarea>\n </div>\n <div class=\"button\">\n <button type=\"submit\">Envia tu mensaje</button>\n </div>\n</form>\n</code></pre></div>\n<div class=\"code-example\"><pre class=\"brush: css hidden notranslate\"><code>form {\n /* Just to center the form on the page */\n margin: 0 auto;\n width: 400px;\n /* To see the limits of the form */\n padding: 1em;\n border: 1px solid #ccc;\n border-radius: 1em;\n}\ndiv + div {\n margin-top: 1em;\n}\nlabel {\n /* To make sure that all label have the same size and are properly align */\n display: inline-block;\n width: 90px;\n text-align: right;\n}\ninput,\ntextarea {\n /* To make sure that all text field have the same font settings\n By default, textarea are set with a monospace font */\n font: 1em sans-serif;\n /* To give the same size to all text field */\n width: 300px;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n /* To harmonize the look & feel of text field border */\n border: 1px solid #999;\n}\ninput:focus,\ntextarea:focus {\n /* To give a little highlight on active elements */\n border-color: #000;\n}\ntextarea {\n /* To properly align multiline text field with their label */\n vertical-align: top;\n /* To give enough room to type some text */\n height: 5em;\n /* To allow users to resize any textarea vertically\n It works only on Chrome, Firefox and Safari */\n resize: vertical;\n}\n.button {\n /* To position the buttons to the same position of the text fields */\n padding-left: 90px; /* same size as the label elements */\n}\nbutton {\n /* This extra margin represent the same space as the space between\n the labels and their text fields */\n margin-left: 0.5em;\n}\n</code></pre></div>\n<p>must be provided</p>\n<p>Pero esto es solo el comienzo: ahora ha llegado el momento de profundizar en el tema. Los formularios tienen mucho más potencial de lo que hemos visto aquí y los artículos siguientes de este módulo te ayudarán a dominarlo.</p>\n<ul class=\"prev-next\"><li><a class=\"button secondary\" href=\"/es/docs/Learn_web_development/Extensions/Forms\"><span class=\"button-wrap\"> Overview: Pilares de los formularios web</span></a></li><li><a class=\"button secondary\" href=\"/es/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form\"><span class=\"button-wrap\"> Siguiente </span></a></li></ul>"}},{"type":"prose","value":{"id":"temas_avanzados","title":"Temas avanzados","isH3":true,"content":"<ul>\n<li><a href=\"/es/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls\">Cómo construir controles de formulario personalizados</a></li>\n<li><a href=\"/en-US/docs/Learn_web_development/Extensions/Forms/Sending_forms_through_JavaScript\" class=\"only-in-en-us\">Enviar formularios a través de JavaScript</a></li>\n<li><a href=\"/en-US/docs/Learn_web_development/Extensions/Forms\" class=\"only-in-en-us\">Tabla de compatibilidad para las propiedades de los controles de formulario</a></li>\n</ul>"}}],"isActive":true,"isMarkdown":true,"isTranslated":true,"locale":"es","mdn_url":"/es/docs/Learn_web_development/Extensions/Forms/Your_first_form","modified":"2024-12-27T01:30:25.000Z","native":"Español","noIndexing":false,"other_translations":[{"locale":"en-US","title":"Your first form","native":"English (US)"},{"locale":"de","title":"Ihr erstes Formular","native":"Deutsch"},{"locale":"fr","title":"Mon premier formulaire HTML","native":"Français"},{"locale":"ja","title":"初めてのフォーム","native":"日本語"},{"locale":"ko","title":"당신의 첫 HTML 폼","native":"한국어"},{"locale":"pt-BR","title":"Meu primeiro formulário HTML","native":"Português (do Brasil)"},{"locale":"zh-CN","title":"创建我的第一个表单","native":"中文 (简体)"}],"pageTitle":"Mi primer formulario HTML - Aprende desarrollo web | MDN","parents":[{"uri":"/es/docs/Learn_web_development","title":"Aprende desarrollo web"},{"uri":"/en-US/docs/Learn_web_development/Extensions","title":"Extension modules"},{"uri":"/es/docs/Learn_web_development/Extensions/Forms","title":"Pilares de los formularios web"},{"uri":"/es/docs/Learn_web_development/Extensions/Forms/Your_first_form","title":"Mi primer formulario HTML"}],"popularity":null,"short_title":"Mi primer formulario HTML","sidebarHTML":"<ol><li class=\"section\"><a href=\"/en-US/docs/Learn_web_development/Getting_started\" class=\"only-in-en-us\">Getting started modules</a></li><li class=\"toggle\"><details><summary><a href=\"/en-US/docs/Learn_web_development/Getting_started/Environment_setup\" class=\"only-in-en-us\">Environment setup</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Getting_started/Environment_setup/Installing_software\">Instalación de software básico</a></li><li><a href=\"/es/docs/Learn_web_development/Getting_started/Environment_setup/Browsing_the_web\">¿Cuál es la diferencia entre la página web, el sitio web, el servidor web y el motor de búsqueda?</a></li><li><a href=\"/en-US/docs/Learn_web_development/Getting_started/Environment_setup/Code_editors\" class=\"only-in-en-us\">Code editors</a></li><li><a href=\"/es/docs/Learn_web_development/Getting_started/Environment_setup/Dealing_with_files\">Manejo de archivos</a></li><li><a href=\"/en-US/docs/Learn_web_development/Getting_started/Environment_setup/Command_line\" class=\"only-in-en-us\">Command line crash course</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Getting_started/Your_first_website\">Your first website</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Getting_started/Your_first_website/What_will_your_website_look_like\">¿Cuál será la apariencia de tu sitio Web?</a></li><li><a href=\"/es/docs/Learn_web_development/Getting_started/Your_first_website/Creating_the_content\">Conceptos básicos de HTML</a></li><li><a href=\"/es/docs/Learn_web_development/Getting_started/Your_first_website/Styling_the_content\">CSS básico</a></li><li><a href=\"/es/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity\">Fundamentos de JavaScript</a></li><li><a href=\"/es/docs/Learn_web_development/Getting_started/Your_first_website/Publishing_your_website\">Publicar tu sitio web</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/en-US/docs/Learn_web_development/Getting_started/Web_standards\" class=\"only-in-en-us\">Web standards</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Getting_started/Web_standards/How_the_web_works\">Cómo funciona la web</a></li><li><a href=\"/es/docs/Learn_web_development/Getting_started/Web_standards/The_web_standards_model\">La web y los estándares web</a></li><li><a href=\"/en-US/docs/Learn_web_development/Getting_started/Web_standards/How_browsers_load_websites\" class=\"only-in-en-us\">How browsers load websites</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/en-US/docs/Learn_web_development/Getting_started/Soft_skills\" class=\"only-in-en-us\">Soft skills</a></summary><ol><li><a href=\"/en-US/docs/Learn_web_development/Getting_started/Soft_skills/Research_and_learning\" class=\"only-in-en-us\">Research and learning</a></li><li><a href=\"/en-US/docs/Learn_web_development/Getting_started/Soft_skills/Collaboration_and_teamwork\" class=\"only-in-en-us\">Collaboration and teamwork</a></li><li><a href=\"/en-US/docs/Learn_web_development/Getting_started/Soft_skills/Workflows_and_processes\" class=\"only-in-en-us\">Workflows and processes</a></li><li><a href=\"/en-US/docs/Learn_web_development/Getting_started/Soft_skills/Job_interviews\" class=\"only-in-en-us\">Succeeding in job interviews</a></li></ol></details></li><li class=\"section\"><a href=\"/en-US/docs/Learn_web_development/Core\" class=\"only-in-en-us\">Core modules</a></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Core/Structuring_content\">Structuring content with HTML</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax\">Primeros pasos con HTML</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Webpage_metadata\">¿Qué hay en la cabecera? Metadatos en HTML</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Headings_and_paragraphs\">Fundamentos de texto en HTML</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Structuring_content/Emphasis_and_importance\" class=\"only-in-en-us\">Emphasis and importance</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Structuring_content/Lists\" class=\"only-in-en-us\">Lists</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Structuring_documents\">Estructura web y documentación</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features\">Formateo de texto avanzado</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Creating_links\">Crear hipervínculos</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Marking_up_a_letter\">Marcando una Carta</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Structuring_a_page_of_content\">Estructuración de una Página de contenido</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/HTML_images\">Imágenes en HTML</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio\">Contenido de audio y video</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Mozilla_splash_page\">Página de bienvenida de Mozilla</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/HTML_table_basics\">Conceptos básicos de las tablas HTML</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Table_accessibility\">Funciones avanzadas de las tablas HTML y accesibilidad</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Planet_data_table\">Evaluación: Estructurando datos planetarios</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Structuring_content/HTML_forms\" class=\"only-in-en-us\">Forms and buttons in HTML</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Structuring_content/Debugging_HTML\">Depurar el HTML</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Core/Styling_basics\">CSS styling basics</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/What_is_CSS\">Cómo funciona CSS</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Getting_started\">Empezar con CSS</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Styling_a_bio_page\">Usa tu nuevo conocimiento</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Basic_selectors\">Selectores CSS</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Attribute_selectors\">Selectores de atributo</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Pseudo_classes_and_elements\">Pseudoclases y pseudoelementos</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Combinators\">Combinadores</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Box_model\">El modelo de caja</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Handling_conflicts\">Cascada y herencia</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Values_and_units\">Valores y unidades CSS</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Sizing\">Dimensionar elementos en CSS</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Backgrounds_and_borders\">Fondos y bordes</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Overflow\">Contenido desbordado</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Images_media_forms\">Imágenes, medios y elementos de formulario</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Tables\">Estilizando tablas</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Debugging_CSS\">Depurar el CSS</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Styling_basics/Fundamental_CSS_comprehension\">Comprensión de los fundamentos de CSS</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Styling_basics/Fancy_letterheaded_paper\" class=\"only-in-en-us\">Challenge: Creating fancy letterheaded paper</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Styling_basics/Cool-looking_box\" class=\"only-in-en-us\">Challenge: A cool-looking box</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Core/Text_styling\">CSS text styling</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Core/Text_styling/Fundamentals\">Fundamentos de texto y fuentes tipográficas</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Text_styling/Styling_lists\">Aplicación de estilo a listas</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Text_styling/Styling_links\">Dar estilo a los enlaces</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Text_styling/Web_fonts\">Fuentes web</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Text_styling/Typesetting_a_homepage\" class=\"only-in-en-us\">Challenge: Typesetting a community school homepage</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Core/CSS_layout\">CSS layout</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Core/CSS_layout/Introduction\">Introducción al diseño en CSS</a></li><li><a href=\"/es/docs/Learn_web_development/Core/CSS_layout/Floats\">Floats</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/CSS_layout/Positioning\" class=\"only-in-en-us\">Positioning</a></li><li><a href=\"/es/docs/Learn_web_development/Core/CSS_layout/Flexbox\">Flexbox</a></li><li><a href=\"/es/docs/Learn_web_development/Core/CSS_layout/Grids\">Cuadrículas</a></li><li><a href=\"/es/docs/Learn_web_development/Core/CSS_layout/Responsive_Design\">Diseño receptivo</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/CSS_layout/Media_queries\" class=\"only-in-en-us\">Media query fundamentals</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/CSS_layout/Fundamental_Layout_Comprehension\" class=\"only-in-en-us\">Challenge: Fundamental layout comprehension</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Core/Scripting\">Dynamic scripting with JavaScript</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/What_is_JavaScript\">¿Qué es JavaScript?</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/A_first_splash\">Un primer acercamiento a JavaScript</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/What_went_wrong\">¿Qué ha salido mal? Corrigiendo JavaScript</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Variables\">Almacenando la información que necesitas - Variables</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Math\">Matemáticas básicas en JavaScript — números y operadores</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Strings\">Manejar texto — cadenas en JavaScript</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Useful_string_methods\">Métodos útiles con cadenas</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Arrays\">Arreglos</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Silly_story_generator\">Generador de historias absurdas</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Conditionals\">Tomando decisiones en tu código — condicionales</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Loops\">Código de bucle</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Scripting/Functions\" class=\"only-in-en-us\">Functions — reusable blocks of code</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Build_your_own_function\">Construye tu propia función</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Return_values\">Una función retorna valores</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Events\">Introducción a los eventos</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Scripting/Event_bubbling\" class=\"only-in-en-us\">Event bubbling</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Scripting/Image_gallery\" class=\"only-in-en-us\">Challenge: Image gallery</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Object_basics\">Conceptos básicos de los objetos JavaScript</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Scripting/DOM_scripting\" class=\"only-in-en-us\">DOM scripting introduction</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/Network_requests\">AJAX</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Scripting/JSON\">Trabajando con JSON</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Scripting/Debugging_JavaScript\" class=\"only-in-en-us\">Debugging JavaScript and handling errors</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Core/Frameworks_libraries\">JavaScript frameworks and libraries</a></summary><ol><li><a href=\"/en-US/docs/Learn_web_development/Core/Frameworks_libraries/Introduction\" class=\"only-in-en-us\">Introduction to client-side frameworks</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Frameworks_libraries/Main_features\" class=\"only-in-en-us\">Framework main features</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Frameworks_libraries/React_getting_started\">Primeros pasos en React</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_todo_list_beginning\" class=\"only-in-en-us\">Beginning our React todo list</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Frameworks_libraries/React_components\">Creando componentes en nuestra app de React</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_interactivity_events_state\" class=\"only-in-en-us\">React interactivity: Events and state</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_interactivity_filtering_conditional_rendering\" class=\"only-in-en-us\">React interactivity: Editing, filtering, conditional rendering</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_accessibility\" class=\"only-in-en-us\">Accessibility in React</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_resources\" class=\"only-in-en-us\">React resources</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Core/Accessibility\">Accessibility</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Core/Accessibility/What_is_accessibility\">¿Qué es la accesibilidad?</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Accessibility/Tooling\" class=\"only-in-en-us\">Accessibility tooling and assistive technology</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Accessibility/HTML\">HTML: Una buena base para la accesibilidad</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Accessibility/CSS_and_JavaScript\">Buenas prácticas de accesibilidad CSS y JavaScript</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Accessibility/WAI-ARIA_basics\" class=\"only-in-en-us\">WAI-ARIA basics</a></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Accessibility/Multimedia\" class=\"only-in-en-us\">Accessible multimedia</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Accessibility/Mobile\">Mobile accessibility</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Accessibility/Accessibility_troubleshooting\">Evaluación: Solución de problemas de accesibilidad</a></li></ol></details></li><li><a href=\"/en-US/docs/Learn_web_development/Core/Design_for_developers\" class=\"only-in-en-us\">Design for developers</a></li><li><a href=\"/es/docs/Learn_web_development/Core/Version_control\">Version control</a></li><li class=\"section\"><a href=\"/en-US/docs/Learn_web_development/Extensions\" class=\"only-in-en-us\">Extension modules</a></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects\">Advanced JavaScript objects</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_prototypes\">Prototipos de objetos</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object-oriented_programming\" class=\"only-in-en-us\">Object-oriented programming</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Classes_in_JavaScript\">Clases en JavaScript</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_building_practice\">Ejercicio práctico de construcción de objetos</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Adding_bouncing_balls_features\">Añadiendo características a nuestra demo de bouncing balls</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Client-side_APIs\">Client-side web APIs</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Extensions/Client-side_APIs/Introduction\">Introducción a las APIs web</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Video_and_audio_APIs\" class=\"only-in-en-us\">Video and Audio APIs</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Drawing_graphics\" class=\"only-in-en-us\">Drawing graphics</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Client-side_APIs/Client-side_storage\">Almacenamiento del lado cliente</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Third_party_APIs\" class=\"only-in-en-us\">Third-party APIs</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Async_JS\">Asynchronous JavaScript</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Extensions/Async_JS/Introducing\">Introducción a JavaScript asíncrono</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Async_JS/Promises\" class=\"only-in-en-us\">How to use promises</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Async_JS/Implementing_a_promise-based_API\" class=\"only-in-en-us\">How to implement a promise-based API</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Async_JS/Introducing_workers\" class=\"only-in-en-us\">Introducing workers</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Async_JS/Sequencing_animations\" class=\"only-in-en-us\">Challenge: Sequencing animations</a></li></ol></details></li><li class=\"toggle\"><details open=\"\"><summary><a href=\"/es/docs/Learn_web_development/Extensions/Forms\">Web forms</a></summary><ol><li><em><a href=\"/es/docs/Learn_web_development/Extensions/Forms/Your_first_form\" aria-current=\"page\">Mi primer formulario HTML</a></em></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form\">Cómo estructurar un formulario HTML</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Forms/Basic_native_form_controls\">Controles de formulario originales</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Forms/HTML5_input_types\">Tipos de input de HTML5</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Forms/Other_form_controls\" class=\"only-in-en-us\">Other form controls</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Forms/Styling_web_forms\">Estilizando formularios HTML</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Forms/Advanced_form_styling\" class=\"only-in-en-us\">Advanced form styling</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Forms/UI_pseudo-classes\" class=\"only-in-en-us\">UI pseudo-classes</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Forms/Form_validation\">Validación de formularios de datos</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data\">Sending form data</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Client-side_tools\">Understanding client-side tools</a></summary><ol><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Client-side_tools/Overview\" class=\"only-in-en-us\">Client-side tooling overview</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Client-side_tools/Package_management\" class=\"only-in-en-us\">Package management basics</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Client-side_tools/Introducing_complete_toolchain\" class=\"only-in-en-us\">Introducing a complete toolchain</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Client-side_tools/Deployment\" class=\"only-in-en-us\">Deploying our app</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Server-side\">Server-side websites</a></summary><ol><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/First_steps\">Server-side first steps</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/First_steps/Introduction\">Introducción al lado servidor</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/First_steps/Client-Server_overview\">Visión General Cliente-Servidor</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/First_steps/Web_frameworks\">Frameworks Web de lado servidor</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/First_steps/Website_security\">Seguridad de Sitios Web</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django\">Django web framework (Python)</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Introduction\">Introducción a Django</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/development_environment\">Puesta en marcha de un entorno de desarrollo Django</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Tutorial_local_library_website\">Tutorial Django: El Sitio Web de La Biblioteca Local</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/skeleton_website\">Tutorial Django Parte 2: Creación del esqueleto del sitio web</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Models\">Tutorial Django Parte 3: Uso de modelos</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Admin_site\">Tutorial Django Parte 4: Sitio de Administración de Django</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Home_page\">Tutorial de Django Parte 5: Creación de tu página de inicio</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Generic_views\">Tutorial de Django Parte 6: Listas genéricas y vistas de detalle</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Sessions\">Tutorial de Django Parte 7: Framework de sesiones</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Authentication\">Tutorial de Django Parte 8: Autenticación y permisos de Usuario</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Forms\">Tutorial de Django Parte 9: Trabajo con formularios</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Testing\">Tutorial de Django Parte 10: Probando una aplicación web Django</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Django/Deployment\">Tutorial de Django Parte 11: Desplegando Django a producción</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Server-side/Django/web_application_security\" class=\"only-in-en-us\">Django web application security</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Server-side/Django/django_assessment_blog\" class=\"only-in-en-us\">Assessment: DIY Django mini blog</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs\">Express web framework (Node.js)</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Introduction\">Introducción a Express/Node</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/development_environment\">Setting up a Node development environment</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Tutorial_local_library_website\">Express Tutorial: El sitio web de la Biblioteca Local</a></li><li><a href=\"/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/skeleton_website\">Express Tutorial Part 2: Creating a skeleton website</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/mongoose\" class=\"only-in-en-us\">Express Tutorial Part 3: Using a Database (with Mongoose)</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/routes\" class=\"only-in-en-us\">Express Tutorial Part 4: Routes and controllers</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data\" class=\"only-in-en-us\">Express Tutorial Part 5: Displaying library data</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/forms\" class=\"only-in-en-us\">Express Tutorial Part 6: Working with forms</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/deployment\" class=\"only-in-en-us\">Express Tutorial Part 7: Deploying to production</a></li></ol></details></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Performance\">Web performance</a></summary><ol><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/why_web_performance\" class=\"only-in-en-us\">The \"why\" of web performance</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/What_is_web_performance\" class=\"only-in-en-us\">What is web performance?</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/Perceived_performance\" class=\"only-in-en-us\">Perceived performance</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/Measuring_performance\" class=\"only-in-en-us\">Measuring performance</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/Multimedia\" class=\"only-in-en-us\">Multimedia: Images</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/video\" class=\"only-in-en-us\">Multimedia: video</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/JavaScript\" class=\"only-in-en-us\">JavaScript performance optimization</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/HTML\" class=\"only-in-en-us\">HTML performance optimization</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/CSS\" class=\"only-in-en-us\">CSS performance optimization</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Performance/business_case_for_performance\" class=\"only-in-en-us\">The business case for web performance</a></li></ol></details></li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Extensions/Testing\">Testing</a></summary><ol><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Testing/Introduction\" class=\"only-in-en-us\">Introduction to cross-browser testing</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Testing/Testing_strategies\" class=\"only-in-en-us\">Strategies for carrying out testing</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Testing/HTML_and_CSS\" class=\"only-in-en-us\">Handling common HTML and CSS problems</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Testing/Feature_detection\" class=\"only-in-en-us\">Implementing feature detection</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Testing/Automated_testing\" class=\"only-in-en-us\">Introduction to automated testing</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Testing/Your_own_automation_environment\" class=\"only-in-en-us\">Setting up your own test automation environment</a></li></ol></details></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Transform_animate\" class=\"only-in-en-us\">Transform and animate CSS</a></li><li><a href=\"/en-US/docs/Learn_web_development/Extensions/Security_privacy\" class=\"only-in-en-us\">Security and privacy</a></li><li class=\"section\">Further resources</li><li class=\"toggle\"><details><summary><a href=\"/es/docs/Learn_web_development/Howto\">How to solve common problems</a></summary><ol><li><a href=\"/es/docs/Learn_web_development/Howto/Solve_HTML_problems\">Solución de problemas comunes de HTML</a></li><li><a href=\"/es/docs/Learn_web_development/Howto/Solve_CSS_problems\">Usa CSS para resolver problemas comunes</a></li><li><a href=\"/es/docs/Learn_web_development/Howto/Solve_JavaScript_problems\">Resuelva problemas comunes en su código JavaScript</a></li><li><a href=\"/en-US/docs/Learn_web_development/Howto/Web_mechanics\" class=\"only-in-en-us\">Web mechanics</a></li><li><a href=\"/en-US/docs/Learn_web_development/Howto/Tools_and_setup\" class=\"only-in-en-us\">Tools and setup</a></li><li><a href=\"/en-US/docs/Learn_web_development/Howto/Design_and_accessibility\" class=\"only-in-en-us\">Design and accessibility</a></li></ol></details></li><li><a href=\"/en-US/docs/Learn_web_development/About\" class=\"only-in-en-us\">About</a></li><li><a href=\"/en-US/docs/Learn_web_development/Educators\" class=\"only-in-en-us\">Resources for educators</a></li><li><a href=\"/en-US/docs/Learn_web_development/Changelog\" class=\"only-in-en-us\">Changelog</a></li></ol>","source":{"folder":"es/learn_web_development/extensions/forms/your_first_form","github_url":"https://github.com/mdn/translated-content/blob/main/files/es/learn_web_development/extensions/forms/your_first_form/index.md","last_commit_url":"https://github.com/mdn/translated-content/commit/f680575848908ce31c07fb90c5687b5b81c302ff","filename":"index.md"},"summary":"El primer artículo de nuestra serie te proporciona una primera experiencia de creación de un formulario web, que incluye diseñar un formulario sencillo con controles de formulario adecuados y otros elementos HTML, añadir un poco de estilo muy simple con CSS y describir cómo se envían los datos a un servidor. Ampliaremos cada uno de estos subtemas más adelante.","title":"Mi primer formulario HTML","toc":[{"text":"¿Qué son los formularios web?","id":"¿qué_son_los_formularios_web"},{"text":"Diseñar tu formulario","id":"diseñar_tu_formulario"},{"text":"Aprendizaje activo: La implementación de nuestro formulario HTML","id":"aprendizaje_activo_la_implementación_de_nuestro_formulario_html"},{"text":"Aplicar estilo básico a un formulario","id":"aplicar_estilo_básico_a_un_formulario"},{"text":"Enviar los datos del formulario a un servidor web","id":"enviar_los_datos_del_formulario_a_un_servidor_web"},{"text":"Resumen","id":"resumen"}],"pageType":"learn-module-chapter"}}</script></body></html>