Як я можу використовувати jQuery для того, щоб зробити вхід лише заново?


142

У мене є наступний вклад:

  <input id="fieldName" name="fieldName" type="text" class="text_box" value="Firstname"/>

Як я можу використовувати jQuery, щоб зробити цей елемент вхідним для читання, не змінюючи елемент або його значення?

Відповіді:


255

У ці дні з jQuery 1.6.1 або вище рекомендується використовувати .prop () під час встановлення булевих атрибутів / властивостей.

$("#fieldName").prop("readonly", true);

89

просто додайте наступний атрибут

// for disabled i.e. cannot highlight value or change
disabled="disabled"

// for readonly i.e. can highlight value but not change
readonly="readonly"

JQuery , щоб внести зміни в елемент (замінити disabledна readonlyв наступному для установки readonlyатрибута).

$('#fieldName').attr("disabled","disabled") 

або

$('#fieldName').attr("disabled", true) 

ПРИМІТКА: Станом на jQuery 1.6 рекомендується використовувати .prop()замість .attr(). Наведений вище код буде працювати точно так само , за винятком заміни .attr()на .prop().


4
відключення поля - це не те саме, що зробити його не редагованим, правда? відключивши його, він також не подасть
Дейв

2
@Вправи правильно. Крім того, лише введення даних може бути зосереджено, відключені вводи не можуть
Russ Cam

75

Щоб ввести лише вхід, використовуйте:

 $("#fieldName").attr('readonly','readonly');

щоб використовувати його для читання / запису:

$("#fieldName").removeAttr('readonly');

додавання disabledатрибута не надсилатиме значення з повідомленням.


7

Це можна зробити, просто позначивши його disabledабо enabled. Ви можете використовувати цей код для цього:

//for disable
$('#fieldName').prop('disabled', true);

//for enable 
$('#fieldName').prop('disabled', false);

або

$ ('# fieldName'). prop ('тільки для читання', правда);

$ ('# fieldName'). prop ('лише для читання', помилково);

--- Краще використовувати prop замість attr.


7
Інвалідні матеріали не надсилаються на форму / розміщення форми.
Nielsvh

4

Використовуйте цей приклад, щоб зробити текстове поле ReadOnly or Not.

<input type="textbox" class="txt" id="txt"/>
<input type="button" class="Btn_readOnly" value="Readonly" />
<input type="button" class="Btn_notreadOnly" value="Not Readonly" />

<script>

    $(document).ready(function(){
       ('.Btn_readOnly').click(function(){
           $("#txt").prop("readonly", true);
       });

       ('.Btn_notreadOnly').click(function(){
           $("#txt").prop("readonly", false);
       });
    });

</script>

3

Є два атрибути, а саме - readonlyі disabled, які можуть робити вхід лише для читання. Але між ними є крихітна різниця.

<input type="text" readonly />
<input type="text" disabled />
  • readonlyАтрибут робить ваш введення тексту відключений, і користувачі не можуть змінити його більше.
  • disabledАтрибут не тільки зробить ваш текст введення тексту вимкненим (незмінним), але і не може бути надісланий .

jQuery підхід (1):

$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);

jQuery підхід (2):

$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");

Підхід JavaScript:

document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;

PS propпредставлений с jQuery 1.6.


0

Дано -

<input name="foo" type="text" value="foo" readonly />

це працює - (jquery 1.7.1)

$('input[name="foo"]').prop('readonly', true);

тестували з readonly і readOnly - обидва працювали.


-1

Можливо, використовувати atribute відключено:

<input disabled="disabled" id="fieldName" name="fieldName" type="text" class="text_box" />

Або просто скористайтеся тегом label:;)

<label>

1
У запитанні було сказано: "За допомогою jQuery" (що означає, що це слід робити динамічно) та "лише для читання" (що відрізняється від вимкненого).
Квентін

-1
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
    <title></title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

</head>
<body>
    <div>
        <input id="fieldName" name="fieldName" type="text" class="text_box" value="Firstname" />
    </div>
</body>

<script type="text/javascript">
    $(function()
    {
        $('#fieldName').attr('disabled', 'disabled');

    });
</script>
</html>

-1

Можливо, це має сенс також додати

$('#fieldName').prop('readonly',false);

може використовуватися як параметр перемикання ..


Я спробував це з jQuery 3.3.1, і він просто додає readonlyатрибут до елемента, незалежно від переданого значення. Таким чином, ваш приклад закінчується, роблячи поле введення лише для читання, незважаючи на те, що нібито встановлюючи значення false.
TMN

-1

У JQuery 1.12.1 моя програма використовує код:

$('"#raisepay_id"')[0].readOnly=true;

$('"#raisepay_id"')[0].readOnly=false;

і це працює.


-2

SetReadOnly (стан) дуже корисний для форм, ми можемо встановити будь-яке поле для встановленняReadOnly (стан) безпосередньо або з різних умов. Але я вважаю за краще використовувати readOnly для встановлення непрозорості для селектора, інакше attr = 'disabled' також працював як Точно так же.

читати лише приклади:

$('input').setReadOnly(true);

або через різні кодиції, як

var same = this.checked;
$('input').setReadOnly(same);

тут ми використовуємо булеве значення стану для встановлення та видалення атрибута readonly з вхідного сигналу залежно від клацання прапорець.


наведені вище приклади не працюють - setReadOnly не є функцією, вбудованою у jquery чи будь-які браузери
Dave B 84

-3

У html

$('#raisepay_id').attr("readonly", true) 

$("#raisepay_id").prop("readonly",true);

у завантажувальному закладі

$('#raisepay_id').attr("disabled", true) 

$("#raisepay_id").prop("disabled",true);

JQuery - це бібліотека, що змінюється, і вони іноді регулярно вдосконалюються. .attr () використовується для отримання атрибутів з тегів HTML, і, хоча він ідеально функціональний.

Радимо, якщо ви використовуєте більш пізню версію JQuery, ви повинні використовувати .prop (), коли це можливо.


2
Я проголосував за це, оскільки це безглуздо. Весь HTML, JavaScript і Bootstrap використовує jQuery, так що факт навіть не має значення. Додатково відключені та лише для читання - це дві різні речі, які працюють незалежно від того, використовується Bootstrap чи ні.
simontemplar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.