0

http://jsfiddle.net/6Pu3E/

JS:

$(document).ready(function() {
    var block = false;
    if $('#password').attr('disabled'); {
        block = false;
    }else{
        block = true;
    };
    if block {
        $('.form_input input').attr('disabled','disabled');
    }else{
        $('.form_input input').removeAttribute('disabled');
    }
});

HTML:

<form>
    <input id="password" value="" />
    <input class="form_input" id="Special" />
    <input class="form_input" id="Nothing Special" />
</form>

目标是,如果 ID="password" 的第一个输入没有禁用属性,则具有某个类的所有输入都会禁用该属性。如果第一个输入被禁用,则不会发生任何事情。即其他输入不会获得禁用属性。

4

3 回答 3

2

您的 javascript 语法和使用$()都不正确。If 语句需要在被评估的表达式周围加上括号,并在元素中$('.form_input input')查找元素。<input>.form_input

disabled您还可以使用您希望元素上的属性与元素的属性.form_input相反的逻辑将整个块缩短到一行。disabled#password

尝试:

$(document).ready(function() {
    $('.form_input').prop('disabled',!$('#password').prop('disabled'));
});
于 2012-08-07T20:15:34.777 回答
1

像这样?jsFiddle 示例

var block = false;
if ($('#password').attr('disabled')) {
    block = false;
} else {
    block = true;
}
if (block) {
    $('.form_input').attr('disabled', 'disabled');
} else {
    $('.form_input').removeAttribute('disabled');
}

或超精简版:

$('.form_input').attr('disabled',!$('#password').attr('disabled') );​

jsFiddle 示例

于 2012-08-07T20:17:56.257 回答
0
$(document).ready(function() {
    var foo = $('#password').attr('disabled');
    if (foo == 'disabled'){
    $('.form_input').attr('disabled','disabled');
    }else{
    $('.form_input').removeAttribute('disabled');
    }
});

工作演示:http: //jsfiddle.net/thewingser/6Pu3E/27/

block不需要使用布尔值。老实说,我的变量foo并不是真正需要的。我只是为了可读性而这样做。

于 2012-08-07T20:24:21.800 回答