javascript基础 label标签焦点转移 2017年1月26日

本文介绍了一个简单的网页表单实现方式,并提供了一种使用JavaScript来自定义标签点击时使表单项获得焦点的方法。该方法适用于不同浏览器环境,通过遍历页面上的所有标签并为它们添加点击事件来实现。
<article>
    <h1>Contact the band</h1>
    <form method="post" action="submit.html">
        <fieldset>
            <p>
                <label for="name">Name:</label>
                <input type="text" id="name" name="name" placeholder="Your name" required="required" />
            </p>
            <p>
                <label for="email">Email:</label>
                <input type="email" id="email" name="email" placeholder="Your email address" required="required" />
            </p>
            <p>
                <label for="message">Message:</label>
                <textarea cols="45" rows="7" id="message" name="message" required="required" placeholder="Write your message here."></textarea>
            </p>
            <input type="submit" value="Send" />
        </fieldset>
    </form>
</article>

首先我们先用form包裹表单 用fieldset分组表单 然后给每个表单项用label和input来实际生成 这里的label有个for属性 他指向了某个name为同名的表单项 假设你点击这个label 那么会自动给这个label指向的表单项获得焦点
但是 这种方法并不是所有浏览器都支持 我们完全可以自己去写一个js方法达到这种效果

function getFocus() {
    if(!document.getElementsByTagName) return false;
    var label = document.getElementsByTagName("label");
    if(label.length == 0) return false;
    for(var i=0 ; i<label.length ; i++){
        if(!label[i].getAttribute("for")) continue;
        label[i].onclick = function () {
            var for_name = this.getAttribute("for");
            if(!document.getElementById(for_name)) return false;
            var for_elem = document.getElementById(for_name);
            for_elem.focus();
         }
    }
}

要注意的地方 能用this调用的东西就在 onclick函数里面就可以 不要在外面声明 因为带不进去 里面无法调用 如果必须在外围声明 则需要用.属性的方法带进去 另外oncilck后面不能有括号 有括号那这本身就会被识别成函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老老老刘啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值