JavaScript:查找表单输入的第一个子项是否是输入框或选择下拉列表

标签 javascript

我正在尝试在表单上编写一个脚本,在 HTML 中搜索 DD 标记。当它找到标签时,我想检测 DD 标签中包含的第一个子元素是否是输入框或选择框,以及是否将焦点设置为其。一个页面上可能有多个 DD 标签,因此我只关心它的第一个实例。

本质上,我想做的是当页面加载时,它专注于页面上的第一个表单字段,以便用户可以直接输入数据,而无需单击框或下拉列表。我需要用纯 JS 编写逻辑(所以不要使用 JQuery 解决方案),并适应给定页面是否有输入框作为第一个字段或选择框作为第一个字段。

JSFiddle:http://jsfiddle.net/3UqSq/

任何帮助都会很棒!

输入框的 HTML:

  <div class="container">
     <form class="myform">
       <fieldset>
          <dl>
            <dt><label for="input1">Label 1</label></dt>
            <dd>
               <input id="input1" type="text" value=""/>
               <div>This is some extra DIV's for copy</div>
               <div>This is some extra DIV's for copy</div>
               <div>This is some extra DIV's for copy</div>
            </dd>
            <dt><label for="input2">Label 2</label></dt>
            <dd>
               <input id="input2" type="text" value=""/>
               <div>This is some extra DIV's for copy</div>
               <div>This is some extra DIV's for copy</div>
               <div>This is some extra DIV's for copy</div>
            </dd>
         </dl>
       </fieldset>
     </form>
   </div>

选择框的 HTML:

  <div class="container">
     <form class="myform">
       <fieldset>
          <dl>
            <dt><label for="input1">Label 1</label></dt>
            <dd>
               <select id="input1">
                 <option>Option 1</option>
                 <option>Option 2</option>
                 <option>Option 3</option>
               </select>
               <div>This is some extra DIV's for copy</div>
               <div>This is some extra DIV's for copy</div>
               <div>This is some extra DIV's for copy</div>
            </dd>
            <dt><label for="input2">Label 2</label></dt>
            <dd>
               <input id="input2" type="text" value=""/>
               <div>This is some extra DIV's for copy</div>
               <div>This is some extra DIV's for copy</div>
               <div>This is some extra DIV's for copy</div>
            </dd>
         </dl>
       </fieldset>
     </form>
   </div>

最佳答案

将其包含在页面底部或加载后的脚本中:

​var dd = document.getElementsByTagName('dd')[0];

if (dd.children[0].tagName.toLowerCase() == 'select' ||
    dd.children[0].tagName.toLowerCase() == 'input') {
    dd.children[0].focus();
}

See demo

关于JavaScript:查找表单输入的第一个子项是否是输入框或选择下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9685796/

相关文章:

javascript - 如何转义JS和JSON之间的双引号

javascript - 托管在共享点上时 D3 工具提示与鼠标的位置偏移

javascript - 使用 JavaScript 提示获取输入并将其传递

javascript - React Native AXIOS方法GET response.data显示为空

javascript - Shelljs:如何取消异步进程?

javascript - Node.js 和 JSON : Accessing object properties

javascript - JSON 中的变量

javascript - CSS 过渡动画未应用于内联 svg <text> 但在 <rect> 上它工作正常吗?

javascript - 更新DIV内容后自动滚动

javascript - 如何删除 jQuery-ui 对话框标题栏?