在浏览器中,对 html 渲染时,会对表单进行进一步处理, document.forms 用来存放所有表单,document.forms[x].elements 用来存放对应表单下的控件,如果 input 标签不在任何 form 内,则提交时,该控件会被忽略
部分网站的顶部搜索框同样是 input 标签,但他不在任何 form 内,他是通过 ajax 或者 location.href 或 window.open 方式自己进行处理的,所以具体是否需要放到 form 下,看你的业务处理方式
不一定,可以放到form外部,给input添加form属性,属性值为对应表单的id,这样提交这个表单会同时提交这个表单外的数据
<form methods="get" id="test">
用户名:<input type="text" name="username" required>
<input type="submit" value="提交">
</form>
密码:<input type="text" name="pwd" form="test" required>