我有一个包含文本输入的div。在该div的mousedown我需要防止默认,但当我点击输入键入某些文本时它不会得到焦点因为div(父)阻止默认。
HTML
<div class="test">
<input type="text" class="input1" />
</div>
的Javascript
$(".test").on('mousedown', function(e){
e.preventDefault();
});
有可能解决这个问题吗?
答案 0 :(得分:2)
您可以为输入添加e.stopPropagation();
。它将阻止事件传播到父div
。
$(".test").on('mousedown', function(e){
e.preventDefault();
});
$(".test input").on('mousedown', function(e){
e.stopPropagation();
});
&#13;
<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>
&#13;
但是如果你使用click
事件,那么这不会成为一个问题。事件将被传播,但重点不会丢失。
$(".test").on('click', function(e){
e.preventDefault();
});
&#13;
<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>
&#13;
答案 1 :(得分:1)
测试e.target
,如果是输入,请不要preventDefault()
。