检测输入何时具有“只读”属性

时间:2011-03-24 17:13:30

标签: jquery

我想在输入具有'readonly'属性时抛出警报。我试过这个:

  if($('input').attr('readonly') == 'readonly'){

    alert("foo");
  }

我认为'如果'甚至不是最好的方法。

8 个答案:

答案 0 :(得分:121)

最快的方法是使用.is() jQuery函数。

if ( $('input').is('[readonly]') ) { }

使用[readonly]作为选择器只需检查属性是否已在元素上定义。如果你想检查一个值,你可以改用这样的东西:

if ( $('input').is('[readonly="somevalue"]') ) { }

答案 1 :(得分:18)

从JQuery 1.6开始,总是使用.prop() 在此处阅读原因:http://api.jquery.com/prop/

if($('input').prop('readonly')){ }

.prop()也可用于设置属性

$('input').prop('readonly',true);

$('input').prop('readonly',false);

答案 2 :(得分:3)

您可以使用属性选择器,然后测试长度:

$('input[readonly]').length == 0 // --> ok
$('input[readonly]').length > 0  // --> not ok

答案 3 :(得分:3)

检查“readonly”属性的当前值,如果它是“false”(字符串)或空(undefined或“”)那么它不是只读的。

$('input').each(function() {
    var readonly = $(this).attr("readonly");
    if(readonly && readonly.toLowerCase()!=='false') { // this is readonly
        alert('this is a read only field');
    }
});

答案 4 :(得分:3)

尝试一种简单的方法:

if($('input[readonly="readonly"]')){
   alert("foo");
}

答案 5 :(得分:1)

不带jQuery的javascript怎么样?

对于使用或不使用jQuery可以获得的任何输入,只需:

input.readOnly

注意:记念驼峰

答案 6 :(得分:0)

试试这个:

if($('input').attr('readonly') == undefined){
    alert("foo");
}

如果不存在,则js中将undefined

答案 7 :(得分:0)

在香草/纯javascript中,您可以进行以下检查-

var field = document.querySelector("input[name='fieldName']");
if(field.readOnly){
 alert("foo");
}