声明一个JavaScript函数,该函数可以隐藏调用HTML元素的标签
Declare a JavaScript function which can hide the label of the calling HTML element
HTML
<label for="ABC">LABEL1</label><input type="text" id="ABC" onFocus="label();"/>
<label for="DEF">LABEL2</label><input type="text" id="DEF" onFocus="label();"/>
JavaScript
我想声明一个名为"label"的JS函数,它可以找到调用它的元素的标签并隐藏它
问题已解决感谢大家的支持!:D
这会隐藏相应input
的label
。
function focus() {
var labels = document.getElementsByTagName('label');
for(var i = 0; i < labels.length; i ++) {
var attr = labels[i].getAttribute('for'); //or labels[i].htmlFor
if(attr === this.id) {
labels[i].style.visibility = 'hidden';
//or labels[i].style.display = 'none';
}
}
}
document.getElementById('ABC').addEventListener('focus', focus);
document.getElementById('DEF').addEventListener('focus', focus);
JSFiddle
jQuery解决方案:
$('input').on('focus', function() {
$('label[for=' + this.id + ']').hide();
});
+c.p.u1jQuery解决方案可以用现代浏览器(IE>=9)的标准JS编写,如下
<label for="ABC">LABEL1</label><input type="text" id="ABC" onFocus="label(this);"/>
<label for="DEF">LABEL2</label><input type="text" id="DEF" onFocus="label(this);"/>
function label (el) {
(el = document.querySelector ('label[for=" + el.id + '"]')) &&
(el.style.display = 'none');
}
请注意,我们需要将input
元素作为参数传递给label函数。
小提琴http://jsfiddle.net/jstoolsmith/v5kZb/显示了一种更结构化的方法,并在输入元素失去焦点时替换标签。
这是一个有些迟来的解决方案,只适用于最新/现代的浏览器(基本上不适用于版本8之前的Internet Explorer)。该解决方案实现了显示切换(当input
聚焦时隐藏label
,当input
模糊时恢复):
版本一,利用DOM结构:
// gets the first 'form' element:
var parentElement = document.querySelector('form');
function labelToggle (e) {
// gets the target of the event ('e'),
// the element that was focused or blurred:
var self = e.target;
// if the element has an 'id':
if (self.id) {
// get the previous sibling element
var prev = self.previousElementSibling;
// if it's 'display: none', change display to 'inline',
// otherwise change to 'display: none':
prev.style.display = prev.style.display == 'none' ? 'inline' : 'none';
}
}
/* using event-delegation to avoid event-binding with a loop,
using event-capturing to allow for an ancestor to listen for
the 'non-bubbling' 'focus' and 'blur' events:
*/
parentElement.addEventListener('focus', labelToggle, true);
parentElement.addEventListener('blur', labelToggle, true);
JS Fiddle演示。
版本二,使用for
属性(而不是DOM结构):
// gets the first 'form' element:
var parentElement = document.querySelector('form');
function labelToggle (e) {
// gets the target of the event ('e'),
// the element that was focused or blurred:
var self = e.target;
// if the element has an 'id':
if (self.id) {
// get the label with the relevant 'for' attribute,
// using CSS' attribute-equals notation:
var label = this.querySelector('label[for="' + self.id + '"]');
// if it's 'display: none', change display to 'inline',
// otherwise change to 'display: none':
label.style.display = label.style.display == 'none' ? 'inline' : 'none';
}
}
parentElement.addEventListener('focus', labelToggle, true);
parentElement.addEventListener('blur', labelToggle, true);
JS Fiddle演示。
很明显,你可以用你喜欢的任何名称来调用相关函数,我称它们为"labelToggle"只是因为我更喜欢一个函数名称来指示该函数在被调用时的作用。
参考文献:
document.querySelector()
document.querySelectorAll()
兼容性- CCD_ 10
- CCD_ 11
您的问题不清楚,您想隐藏什么,标签还是文本框?然而,这里有一个想法;它可能会对你有所帮助。
<label for="ABC">LABEL1</label><input type="text" id="ABC" onFocus="label(this.id);"/>
<label for="DEF">LABEL2</label><input type="text" id="DEF" onFocus="label(this.id);"/>
function label(valID){
var totalLabel= document.getElementsByTagName('label');
for(var l = 0; l < totalLabel.length; l++) {
var lbb= totalLabel[l].getAttribute('for');
if(lbb === valID) {
labels[l].style.visibility = 'hidden';
}
}
}
Jquery将最适合于此此处演示
function hideLabel(element) {
var name = $(element).attr("class");
var lab = $("." + name)[0];
$(lab).hide();
}
function showLabel(element) {
var name = $(element).attr("class");
var lab = $("." + name)[0];
$(lab).show();
}
HTML
<label class="a">
Label1</label>
<input type="text" class="a" id="ABC" onfocus="hideLabel(this)" onblur="showLabel(this)" />
<label class="b">
Label2</label>
<input type="text" class="b" id="DEF" onfocus="hideLabel(this)" onblur="showLabel(this)" />
相关文章:
- 从var向代码隐藏函数传递值
- javascript函数和代码隐藏函数的执行顺序
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 仅在第一个结果中显示/隐藏MySQL结果函数
- ASP.net Javascript函数中的隐藏字段为null
- 使用Javascript的多显示隐藏函数
- 如何分解jQuery"toggle”;函数转换为separate“;显示“;以及“;隐藏“;功能
- 使用javascript函数检索隐藏的文本值时出现对象HTMLinputElement错误
- jQuery隐藏函数与“;按钮“;以及“;span”;但不是用“;a“;要素
- jQuery隐藏函数出现问题
- 为什么需要从代码隐藏调用 JavaScript 函数
- 在 JavaScript 中,当我们实例化派生对象时,原型的函数隐藏在哪里
- MVC ASP.Net Javascript - 如果 Url 没有 id,如何使用 javascript 函数隐藏按钮
- 函数隐藏在javascript中
- jquery.hide()函数-隐藏手机,显示桌面
- 当用标签形式覆盖时,为什么函数隐藏/显示元素不起作用
- 我无法用我的函数隐藏jquery自动完成
- 使用onclick函数隐藏父元素
- JS函数隐藏元素值
- JQuery动态函数隐藏元素