首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在按键输入字段上重置背景不透明度

在按键输入字段上重置背景不透明度
EN

Stack Overflow用户
提问于 2017-02-25 09:10:03
回答 3查看 189关注 0票数 1

当有人点击一个输入字段时,站点的背景会得到一个不透明的信息来强调输入字段。这很酷,但我只希望在输入字段上单击,而不是在输入字段中键入某些内容时。

因此,我想要实现的是,当有人在输入字段中输入(按下键)时,将不透明度重置为1。

这个是可能的吗?如果是的话,我应如何做到这一点?

HTML:

代码语言:javascript
复制
<div class="blur"> </div>
<input class="blurOnFocus">

CSS:

代码语言:javascript
复制
.blurry {
  opacity: 0.5;
}

JS:

代码语言:javascript
复制
function onFocus() {
    var blurElements = document.getElementsByClassName('blur');
    for (var i = 0, l = blurElements.length; i < l; i++) {
        blurElements[i].classList.add("blurry");
    }
}

function onFocusOut() {
    var blurElements = document.getElementsByClassName('blur');
    for (var i = 0, l = blurElements.length; i < l; i++) {
        blurElements[i].classList.remove("blurry");
    }
}
EN

回答 3

Stack Overflow用户

发布于 2017-02-25 09:43:42

代码语言:javascript
复制
function changebg() { 
  var maindivclass = document.getElementById("maindiv").classList; 
 	maindivclass.remove("red"); 
    maindivclass.add("blue");
}
代码语言:javascript
复制
	.blue{background:blue;}
	.red{background: red;}
代码语言:javascript
复制
<ul>
	<li id="my_block1">		
		<span>some text 1</span>									
		<div class="form-group">
			<input id="input1" type="text" name="my_item_1" onkeypress="changebg()">
      <div class="red" id="maindiv">test</div>
		</div>
	</li>	
</ul>

票数 1
EN

Stack Overflow用户

发布于 2017-02-25 09:19:18

您应该使用输入字段上的keydown事件来删除应用于focus.blurry类。

代码语言:javascript
复制
function onFocus() {
    var blurElements = document.getElementsByClassName('blur');
    for (var i = 0, l = blurElements.length; i < l; i++) {
        blurElements[i].classList.add("blurry");
    }
}

function onKeydown() {
    var blurElements = document.getElementsByClassName('blur');
    for (var i = 0, l = blurElements.length; i < l; i++) {
        blurElements[i].classList.remove("blurry");
    }
}

var el = document.getElementsByClassName("blurOnFocus");
for(var i=0; i<el.length; i++) {
 el[i].addEventListener( 'focus', onFocus );
 el[i].addEventListener( 'keydown', onKeydown );
 el[i].addEventListener( 'blur', onKeydown );
}
代码语言:javascript
复制
.blurOnFocus {
margin: 30px;
}
.blur {
width: 200px;
height: 200px;
}

.blurry{
  background-color: #000;
  opacity: 0.5;
}
代码语言:javascript
复制
<div class="blur">
<input class="blurOnFocus" />
<input class="blurOnFocus" />
</div>

票数 0
EN

Stack Overflow用户

发布于 2017-02-25 09:51:02

您需要使用onclick & onkeypress事件来检测条件;对于更改CSS类,最好使用setAttribute函数。

假设这是您的HTML片段:

代码语言:javascript
复制
<div id="myDiv" class="blur"> Lorem ipsum... </div>
<input type="text" name="myInp" id="myInp" />

下面的脚本可以满足您的需要:

代码语言:javascript
复制
document.getElementById('myInp').onclick = function () {
    document.getElementById('myDiv').setAttribute('class', 'blurry');
};
document.getElementById('myInp').onkeypress = function(){
    document.getElementById('myDiv').setAttribute('class', 'blur');
};

编辑:使用纯类和标记工作

代码语言:javascript
复制
var inputs = document.getElementsByTagName('input');
for (var j=0; j<inputs.length ; j++) {
    inputs[j].addEventListener('click', function () {
        var blurredItems = document.getElementsByClassName('blur');
        for (var i = 0; i < blurredItems.length; i++) {
            blurredItems[i].setAttribute('class', 'blurry');
        }
    });
    inputs[j].addEventListener('keypress', function () {
        var blurriedItems = document.getElementsByClassName('blurry');
        for (var i = 0; i < blurriedItems.length; i++) {
            blurriedItems[i].setAttribute('class', 'blur');
        }
    });
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42454093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档