您的位置:首页 > Web前端 > JavaScript

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

2017-01-26 22:46 246 查看
<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后面不能有括号 有括号那这本身就会被识别成函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: