2016-03-07 4 views
0

Мне нужно текстовое поле для чтения только в том случае, если оно содержит значение, другое редактируемое.Удалить свойство readonly

Вот что я сделал

if ($("#prq_purcatalogkey").val() != null) { 

    $('#prqitms_purcatalogd').prop('readonly', true); 
} 
else { 
    $('#prqitms_purcatalogd').removeProp("readonly"); 

} 

, но только для чтения не работает должным образом, поле всегда содержит только для чтения ли это значение или нет! ,

Я попытался

$('#prqitms_purcatalogd').prop('readonly', true); 

также

$('#prqitms_purcatalogd').removeAttr('readonly'); 

но никто не работает.

+0

, так что вы хотите, чтобы тот же текстовый ящик, что и в readonly, если он содержит значение или у вас есть 2 разных текстовых поля? –

+3

Где этот код? Вы положили его внутри слушателя, например '.on ('change')'? Если нет, то он будет работать только один раз при загрузке страницы. – Stef

+2

'val()' никогда не будет 'NULL'. Он возвращает пустую строку, если нет значения IIRC. –

ответ

5

Вы можете попробовать

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

вместо .removeAttr()

Как указывается в комментариях, вы хотите, чтобы это огонь, когда изменяется элемент, поэтому прикрепить его к проводнику .change() событий.

$("#prq_purcatalogkey").change(function(){ 
if ($(this).val() == ''){ 
    $('#prqitms_purcatalogd').prop('readonly', false); 
} else { 
    $('#prqitms_purcatalogd').prop("readonly", true); 
} 
1

Чтобы удалить свойство только для чтения сделать:

$('#prqitms_purcatalogd').prop("readonly", false); // Element(s) are now enabled. 

Надеется, что это помогает

+0

'disabled' - это не то же самое, что' readonly' –

+1

изменен на readonly. Не уверен, почему я отключил – zachu

+1

Я уже сделал это, но он не работает: S – MNada

4

Вы можете сделать текстовое поле только для чтения, если он содержит значение, используя следующий код. Это основано на вашем комментарии.

if ($("#prqitms_purcatalogd").val() != '') { 

    $('#prqitms_purcatalogd').attr('readonly', true); 
} 
else { 
    $('#prqitms_purcatalogd').attr("readonly", false); 

} 

Я работаю JSFiddle код here

+1

Yep. Единственная проблема с исходным кодом заключалась в том, что он протестировал 'значение' против null. 'value' возвращает непустую строку. –

+0

@JosephMarikle Да. проблема была .val() против null и никогда не возвращает null. Спасибо всем вам. – MNada

1

Try ниже подход ...

var fieldValue = $("#prq_purcatalogkey").val(); 
if (fieldValue != null && fieldValue != "") { 
$('#prqitms_purcatalogd').attr('readonly', 'true'); 
}else{ 
$('#prqitms_purcatalogd').removeAttr('readonly'); 
} 

или есть еще один способ.

var fieldValue = $("#prq_purcatalogkey").val(); 
    if (fieldValue != null && fieldValue != "") { 
    $('#prqitms_purcatalogd').prop("disabled", false); 
    }else{ 
    $('#prqitms_purcatalogd').prop("disabled", true); 
    } 
Смежные вопросы