Ukryj migający kursor textfield

Mam pole tekstowe czy jest sposób na ukrycie migającego kursora tekstu? Mówię to, ponieważ robię horror / mystery stronie internetowej i jednym z wskazówek jest zacząć pisać w dowolnym miejscu.

Może uda mi się to zrobić za pomocą javascript?

Author: Andrey Atapin, 2010-09-08

10 answers

Spróbuj tego:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title >Text Area with no Carat</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <style type="text/css">
        .textarea-wrapper {
            position:relative;
        }
        .textarea-wrapper textarea {
            background-color:white;
        }
        .textarea-wrapper, .textarea-wrapper textarea {
            width:500px;
            height:500px;
        }
        .textarea-wrapper textarea.hidden {
            color:white;
            opacity:0.00;
            filter:alpha(opacity=00);
            position:absolute;
            top:0px;
            left:0px;
        }
    </style>
    <script type="text/javascript">
        $(document).ready(
            function() {
                $("textarea").addClass("-real-textarea");
                $(".textarea-wrapper").append("<textarea class=\"hidden\"></textarea>");
                $(".textarea-wrapper textarea.hidden").keyup(
                    function() {
                        $(".textarea-wrapper textarea.-real-textarea").val($(this).val());
                    }
                );
                $(".textarea-wrapper textarea.-real-textarea").focus(
                    function() {
                        $(this).parent().find("textarea.hidden").focus();
                    }
                );
            }
        );
    </script>
</head>
<body>

    <div class="textarea-wrapper">
        <textarea></textarea>
    </div>

</body>
</html>
Idea polega na stworzeniu drugiego, niewidzialnego nad / na-wierzchu-prawdziwego. Użytkownik wpisuje niewidzialny, ale tekst nie pojawia się (ani karetka/kursor), ponieważ jest niewidoczny! Następnie użyj JavaScript, aby przypisać jego wartość do widocznej.

Ale chyba nie działa w IE8 : '(karetka jest nadal widoczna, mimo że krycie jest podkręcone do 11.

Ale działa w Firefoksie... ?

 20
Author: Richard JP Le Guen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-26 20:21:11

Podstawową ideą jest to, że kolor kursora jest taki sam jak kolor tekstu. Więc pierwszą rzeczą, którą robisz, jest uczynienie tekstu przezroczystym, zabierając kursor ze sobą. Następnie możesz ponownie uwidocznić tekst za pomocą cienia tekstowego.

Użyj tego linku, aby zobaczyć go na żywo w jsfiddle .

input[type="text"]{
    color : transparent;
    text-shadow : 0 0 0 #000;
}
input[type="text"]:focus{
    outline : none;
}

Update:

Wiadomo, że nie działa w iOS 8 i IE 11


Inny pomysł mojego jest nieco bardziej hakerski i wymaga javascript.

HTML i CSS część:

Tworzysz 2 pola wejściowe i ustawiasz jedno dokładnie na drugim za pomocą z-index, itd. Następnie górne pole wejściowe staje się całkowicie przezroczyste, bez ostrości, bez koloru i podobne. Musisz ustawić widoczne, niższe wejście na wyłączone, tak aby pokazywało tylko zawartość powyższego wejścia, ale w rzeczywistości nie działa.

Część Javascript:

Po tym wszystkim synchronizujesz dwa wejścia. Na klawiaturze lub na zmianie Skopiuj zawartość wyższego wejścia na niższe.

Podsumowując powyższe: wpisujesz niewidoczne dane wejściowe, które zostaną wysłane do zaplecza po przesłaniu formularza, ale każda aktualizacja tekstu w nim będzie wyświetlana w dolnym widocznym, ale wyłączonym polu wprowadzania.

 56
Author: Lajos Meszaros,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-09 09:40:18

Szukałem sposobu, aby ukryć migający kursor na urządzeniach z systemem iOS Dla wejść daty, które uruchamiają kalendarz, ponieważ można było zobaczyć migający kursor na górze selektora kalendarza.

input:focus { text-indent: -9999em; }

Więc w tym przypadku mój CSS działa ładnie, oczywiście minusem jest to, że jeśli chcesz zobaczyć, co piszesz, to nie jest dobrze

 18
Author: Slavo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-05 10:06:22

caret-color: transparent !important; działa w nowszych przeglądarkach

 11
Author: cdeutsch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-23 23:42:27

Myślę, że jest to idealne rozwiązanie: Ustaw wejście wystarczająco szerokie, wyrównaj w prawo do ekranu w prawo, dzięki czemu kursor i zawartość będą znajdować się na zewnątrz ekranu, gdy nadal można je kliknąć idealne rozwiązanie

 6
Author: sinfere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-03 05:53:14

Niestety nie można stylizować kursora tekstu za pomocą CSS. Możesz zrobić tylko kilka bardzo złych sztuczek JavaScript, ale w zależności od układu i wymagań witryny, może to nie być w ogóle możliwe. Polecam więc zapomnieć o całym pomyśle.

 4
Author: 2ndkauboy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-08 19:32:12

<input style="position: fixed; top: -1000px">

Działa w iOS8.

 3
Author: Daiwei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-20 04:29:16

function noCursor(a){
  var a = document.getElementById(a),
      b = document.createElement('input');
  b.setAttribute("style","position: absolute; right: 101%;");
  a.parentNode.insertBefore(b, a);

  if(a.addEventListener){
    b.addEventListener("input",function(){a.value = b.value});
    a.addEventListener("focus",function(){b.focus()});
  }else{
    a.attachEvent("onfocus",function(){b.focus()});
    b.attachEvent("onpropertychange",function(){a.value = b.value});
  };
 
}

noCursor('inp');
<input id="inp">

Możesz użyć funkcji dla każdego elementu jou want no cursor for.

 1
Author: Silvester Wennekers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-16 12:57:38

Właśnie zrobiłem proof of concept dla mojego przyjaciela, używając pomysłu @ sinfere:

Demo: http://jsfiddle.net/jkrielaars/y64wjuhj/4/

Początek wejścia jest przesunięty, więc wypada poza kontener (który ma ukryty przepełnienie) Rzeczywiste karaktery (i migający kursor) nigdy nie wejdą do widoku. Fałszywy div jest umieszczony poniżej pola wejściowego, więc dotknięcie fałszywego div ustawi ostrość na niewidzialnym wejściu.

<div class="container">
    <div id="fake" class="fake">
        <span class='star empty'></span>
        <span class='star empty'></span>
        <span class='star empty'></span>
        <span class='star empty'></span>
    </div>
    <input type="text" id="password" class="invisible" maxlength="4">
</div>
 0
Author: JasperZelf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-07 18:47:14

Możesz "ukryć migający kursor textfield", wywołując funkcję rozmycia przy zdarzeniu ostrości

<input type="text" onfocus="this.blur()"/>
 -1
Author: coder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-02 17:54:06