2009-07-03 19 views
9

Jak uniemożliwić użytkownikowi zmianę wartości w polu wejściowym (które zawiera pewną wartość do skopiowania do schowka) bez użycia disabled = "true"? Tekst powinien zostać zaznaczony, gdy użytkownik kliknie w polu (to już działa), ale wpisanie czegokolwiek nie powinno mieć wpływu.JavaScript/jQuery: Jak zapobiec zmianie aktywnego pola wejściowego?

Dzięki

jQuery('input.autoselect[value]').focus(function() { jQuery(this).select(); }); 
+1

Więc masz wejście, element przeznaczony wyłącznie do pobierania danych od użytkownika i umieścić go w systemie, jako wydajność? A teraz próbujesz obejść problem z wejściami zaprojektowanymi do akceptowania danych wejściowych? Naprawiłbym znaczniki, więc nie używasz danych wejściowych wyłącznie do danych wyjściowych. – Quentin

+0

Co to jest down ??? –

+0

sprawdź youtube, robią to samo. Chcę tylko podać krótkie łącze, które użytkownik powinien móc łatwo skopiować do schowka. Co z tym jest nie tak??? Pola wprowadzania mają tutaj pewne zalety. Po prostu staraj się być produktywny! –

Odpowiedz

33

readonly w html wejścia jest wszystko, czego potrzeba, aby uniemożliwić użytkownikowi edytowanie wejście.

<input readonly="readonly" type="text" value="You can't edit me!"/> 
+1

haha, to jest tak wzruszające ... Jesteś prawda, próbowałem tylko wyłączone, ale nie przeczytane, totalnie o tym zapomniałem! Dzięki! –

+1

+1 Jestem także idiotą. :-) Czytam "bez używania niepełnosprawnych" i myślałem "bez używania atrybutów". – Stobor

+0

nie ma problemu! Właśnie przeczytałem pytanie (3 razy) i byłem zdezorientowany, co to była sztuczka. ;-) – scunliffe

0

myślę, że to powinno działać:

var val = jQuery('input.autoselect[value]').val(); 
jQuery('input.autoselect[value]').change(function(){ 
    jQuery(this).val(val); 
}); 

A może (nie jestem pewien)

jQuery('input.autoselect[value]').keydown(function(){ 
    return false; 
}); 
+0

Dzięki, druga wersja działa, ale także uniemożliwia użytkownikowi kopiowanie zawartości (ponieważ CMD + C również nie działa), z pierwszą wersją mam problem, że powinien działać dla więcej niż jednego pola na stronie. Wszelkie pomysły na rozwiązanie tego problemu? –

0

podstawie Pim's answer, jak o tym?

jQuery(document).ready(function(){ 

    jQuery("input.readonly").each(function(){ 
      jQuery(this).attr("savedVal", jQuery(this).val()); 
    }); 

    jQuery("input.readonly").change(function(){ 
      jQuery(this).val(jQuery(this).attr("savedVal")); 
    }); 

}); 

(całkowicie niesprawdzone, ale to pokazuje ideę ...)

+0

Przykład: http://jsbin.com/iqomu (źródło http://jsbin.com/iqomu/edit) – Stobor

+0

dziękuję, ale scunliffe rozwiązał to najbardziej elegancko ... –

0
<script> 
document.getElementById("newval").readOnly = true; 
</script> 

Zegarek dla stolicy „O” w trybie tylko do odczytu ...

Powiązane problemy