2014-09-16 3 views
2

Я обрабатываю mousedown & oncontextmenu события для предотвращения текста & выбор изображения, щелчок правой кнопкой мыши и перетаскивание. Код выглядит следующим образом -onmousedown событие остановка ввода фокус

<body oncontextmenu="return false;" onmousedown="event.preventDefault ? event.preventDefault() : event.returnValue = false"> 
    <input type="text" name="testInput" id="testInput"> 
</body> 

Я думаю, проблема в том, что также предохраняет фокус на входных элементах, как я предупреждение по умолчанию & возвращения ложным для OnMouseDown события, поэтому не позволяя управление переключиться на фокус ввода , поэтому я не могу напечатать что-либо внутри. Я попытался отладить его, выполнив код.

<script type="text/javascript"> 
    $(function(){ 
     $("#testInput").on("focus",function(){ 
      console.log("input focused"); 
     }); 
    }); 
</script> 

Когда я удалил атрибут onmousedown из тела, он дает мне желаемое сообщение на косоле.

любая помощь ... Спасибо заранее.

ответ

1

Вы можете проверить, если событие MouseDown/ContextMenu происходит на любом внутри элемента и разрешить действие по умолчанию, если это так и если не предотвратить действие по умолчанию, используя ниже

document.getElementsByTagName("div")[0].addEventListener("mousedown",function(e){ 
    if(e.target.id=="testInput"){ 

    } else{ 
     e.preventDefault(); 
    } 

}); 

document.getElementsByTagName("div")[0].addEventListener("contextmenu",function(e){ 
    if(e.target.id=="testInput"){ 

    } else{ 
     e.preventDefault(); 
    } 

}); 

Check the Fiddle

+0

, но его тело Событие mousedown/contextmenu будет вызываться всякий раз, когда я попробую его по внутренним элементам, и из самого тела он возвращается, не позволяя контролировать обработку mousedown/contextmenu внутреннего элемента. – Pramod

+0

вы можете использовать document.getElementsByTagName ("body") [0] вместо div –

Смежные вопросы