2009-07-03 2 views
9

Как я могу запретить пользователю изменять значение в поле ввода (которое содержит определенное значение для копирования в буфер обмена) без использования disabled = "true"? Текст следует выбирать, как только пользователь нажимает в поле (это уже работает), но ввод ничего не должен иметь никакого эффекта.Javascript/jQuery: Как предотвратить изменение активного поля ввода?

Благодаря

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

Так у вас есть вход, элемент, предназначенный исключительно для получения данных от пользователя и поместить его в систему, как вывод? И теперь вы пытаетесь решить проблему ввода, предназначенную для принятия ввода? Я бы исправил разметку, поэтому вы не используете вход для вывода. – Quentin

+0

Что такое downvote для ??? –

+0

проверить youtube, они делают то же самое. Я просто хочу предоставить ссылку, которую пользователь должен будет легко копировать в буфер обмена. Что в этом плохого??? Поля ввода имеют некоторые преимущества. Просто постарайся быть продуктивным! –

ответ

33

чтения в HTML входа все, что нужно, чтобы запретить пользователю редактировать вход.

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

ха-ха, это так emberassing ... You're право, я только пробовал отключить, но не только, полностью забыл об этом! Благодаря! –

+1

+1 Я тоже идиот. :-) Я читал «без использования отключенного» и думал «без использования атрибутов». – Stobor

+0

без проблем! Я просто прочитал вопрос (3 раза) и был смущен тем, что было трюком. ;-) – scunliffe

0

Я думаю, что это должно работать:

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

Или, возможно (не уверен)

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

Спасибо, вторая версия работает, но также запрещает пользователю копировать содержимое (потому что CMD + C тоже не работает), с первой версией у меня проблема, что она должна работать более чем на 1 поле на странице. Любые идеи о том, как это решить? –

0

Pim's answer основе, как об этом?

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")); 
    }); 

}); 

(полностью тестировался, но он демонстрирует идею ...)

+0

Пример: http://jsbin.com/iqomu (источник http://jsbin.com/iqomu/edit) – Stobor

+0

спасибо, но scunliffe решил это наиболее элегантно ... –

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

Часы для столицы «O» в ...

чтения