这可能很容易,但是当我在文本框外面点击以在javascript中发出警告但是当我在文本内部单击时没有发生任何事情时,我无法想出任何方法。输入文本在div元素内。
所以,让我们假设我的html就像吼叫:
<div id="myone" onclick="javascript: myfunc();">
<input type="text" id="myInput"></input>
</div>
function myfunc()
{
alert('ok');
}
如何改变?
非常感谢你!
答案 0 :(得分:1)
这样做:
var div = document.getElementById('myone');
var funct = function(){
var input = div.querySelector("#myInput");
return false;
};
div.onclick = funct;
答案 1 :(得分:0)
如果你仔细地这样做,这将有效。
<div id="myone" onclick="javascript: myfunc();">
//your stuff in the clickable division.
</div>
<div style="position:absolute;">
<!--Adjust this division in such a way that, it comes inside your clickable division--><input
type="text" id="myInput"></input>
</div>
//Your script function/code here
function myfunc()
{
alert('ok');
}
答案 2 :(得分:0)
你应该使用这个条件。 e.target !== this
将event.target
与此进行比较通常很有用,以确定是否由于事件冒泡而处理事件。当事件冒泡时,此属性在事件委派中非常有用。
在这样的点击功能中使用它并查看它的实际效果:
$('.divover').on('click', function(e) {
if (e.target !== this) return;
thefunc();
});
var thefunc = function myfunc() {
alert('ok');
}
&#13;
.divover {
padding: 20px;
background: yellow;
}
span {
background: blue;
color: white;
padding: 8px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='divover'>somelabel:
<span><input type="text" class="as" name="forename"></span>
</div>
&#13;