我有一个包含文本输入框的div。当我点击该div时,需要阻止默认行为,但是当我点击输入框以输入一些文本时,由于div(父元素)阻止了默认操作,因此无法获得焦点。
HTML
<div class="test">
<input type="text" class="input1" />
</div>
Javascript
$(".test").on('mousedown', function(e){
e.preventDefault();
});
能否解决这个问题?
我有一个包含文本输入框的div。当我点击该div时,需要阻止默认行为,但是当我点击输入框以输入一些文本时,由于div(父元素)阻止了默认操作,因此无法获得焦点。
HTML
<div class="test">
<input type="text" class="input1" />
</div>
Javascript
$(".test").on('mousedown', function(e){
e.preventDefault();
});
e.stopPropagation();
。这将阻止事件传播到父级 div
。
$(".test").on('mousedown', function(e){
e.preventDefault();
});
$(".test input").on('mousedown', function(e){
e.stopPropagation();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="test">
<input type="text" class="input1" />
</div>
但是,如果使用 click
事件,则这不会成为问题。事件将被传播,但焦点不会丢失。
$(".test").on('click', function(e){
e.preventDefault();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="test">
<input type="text" class="input1" />
</div>
测试 e.target
,如果它是输入框,则不要执行 preventDefault()
。