2013-07-15 5 views
5

Ich habe eine Situation, in der wenn eine Taste doppelgeklickt wird, markiert die gesamte Schaltfläche, was ziemlich nervig ist, also habe ich versucht, es durch Hinzufügen preventDefault() zu der Funktion zu stoppen passiert :(Hervorhebung auftreten, obwohl ich es nicht zu stoppen scheint
Könnte jemand bitte sagen sie mir, warum dies die event.preventDefault(); ignorieren und Hervorhebung der Taste/Text sowieso ?:JS stopp Hervorhebung bei (Doppel) klicken

HTML:

<div class="loading-boundary"> 
    <div class="redesign-due-date-container"> 
     <div class="property due_date flyout-owner overdue value-set" style="margin-left:-3px"> 
      <div class="property-name"> 
       <span data-icon="calendar" class="calendar glyph toolbar-icon prod"></span> 
       <span class="grid_due_date overdue">Yesterday</span> 
      </div> 
     </div> 
    </div> 
</div> 

JS:

$(".property.due_date").click(function(event) { 
    event.stopPropagation(); 
    event.preventDefault(); 

    var e = $(".show-full-duedate"); 

    if (e.css("display") != "block") { 
     $(this).addClass("focused"); 
     e.css("display", "block"); 
    } else { 
     $(this).removeClass("focused"); 
     e.css("display", "none"); 
    } 

    return false; 
}); 

Ich verwende die neueste Version von Chrome zu testen.
Wenn Sie CSS so einstellen, dass die Hervorhebung gestoppt wird, wird die gesamte Hervorhebung der Schaltfläche gestoppt, auch wenn sie nicht angeklickt wurde. Dies ist also keine Option.

+0

Was genau meinst du mit Hervorhebung? Sprechen wir über eine Textauswahl oder einen von Ihnen eingerichteten CSS-Stil? – Jnatalzia

+0

Es wählt den Text "Gestern" – Seb

+0

Ich habe diese http://jsfiddle.net/wEf53/ zu demonstrieren, wenn Sie auf das Wort "Yesterday" doppelklicken, wird es immer noch markieren. – Seb

Antwort

5

Versuchen:

$(".property.due_date").on('click', function(event) { 
    event.preventDefault(); 

    var elem = $(".show-full-duedate"); 

    elem.toggleClass('focused', elem.is(':visible')) 
     .toggle(elem.is(':visible')) 

    document.onselectstart = function() { return false; }; 
    event.target.ondragstart = function() { return false; }; 
    return false; 
}); 

FIDDLE

Die drei letzten Zeilen wird die Auswahl verhindern.

+0

Yay, das hat funktioniert :) Tysm – Seb

+0

Obwohl die 'var elem = $ (". Show-Full-Duedate "); elem.toggleClass ('focused', e.is (': visible')) .toggle (e.is (': visible')) 'bit funktioniert nicht – Seb

+0

Ich habe das ein bisschen geändert, musste es aber Raten Sie, was Sie waren, wo Sie versuchen zu tun, aber es schien wie Sie Klassen und Sichtbarkeit basierend auf den Elementen Sichtbarkeit usw. – adeneo

0

Angenommen, Sie sprechen davon, dass das Element nach einem Doppelklick hervorgehoben wird.

Ich fand einen anderen Beitrag mit einer ähnlichen Frage. - link

Es klingt, als gäbe es keine einfache Möglichkeit, dies zu verbieten, aber Sie könnten das Element nach der Auswahl "de auswählen".

Hoffe, das hilft.

Verwandte Themen