2016-03-07 106 views
0

如果文本字段包含其他可编辑的值,则需要只读文本字段。删除只读属性

这里就是我所做的

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

所以你想同样的文本框作为一个只读,如果它包含值或者你有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

是的。原始代码唯一的问题是它测试了'null'值。 'value'返回一个非空字符串。 –

+0

@JosephMarikle是的。问题是.val()针对null,它永远不会返回null。 谢谢大家。 – MNada

1

尝试下面方法...

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