提问者:小点点

禁用/启用按钮和链接的最简单方法是什么(jQuery Bootstrap)


有时我使用锚作为按钮,有时我只是使用按钮。我想禁用特定的clicky功能,以便:

  • 他们看起来残疾了

我该怎么做呢?


共3个答案

匿名用户

按钮很容易禁用,因为禁用的按钮属性由浏览器处理:

<input type="submit" class="btn" value="My Input Submit" disabled/>
<input type="button" class="btn" value="My Input Button" disabled/>
<button class="btn" disabled>My Button</button>

要使用自定义jQuery函数禁用这些功能,只需使用fn即可。extend()

// Disable function
jQuery.fn.extend({
    disable: function(state) {
        return this.each(function() {
            this.disabled = state;
        });
    }
});

// Disabled with:
$('input[type="submit"], input[type="button"], button').disable(true);

// Enabled with:
$('input[type="submit"], input[type="button"], button').disable(false);

JSFiddle禁用按钮和输入演示。

否则,您将使用jQuery的prop()方法:

$('button').prop('disabled', true);
$('button').prop('disabled', false);

值得注意的是,disabled不是锚定标记的有效属性。因此,引导在其上使用以下样式。btn要素:

.btn.disabled, .btn[disabled] {
    cursor: default;
    background-image: none;
    opacity: 0.65;
    filter: alpha(opacity=65);
    -webkit-box-shadow: none;
    -moz-box-shadow: none;
    box-shadow: none;
    color: #333;
    background-color: #E6E6E6;
}

注意[disabled]属性是如何作为的目标的。已禁用类。。disabled类是使锚定标记显示为disabled所需的。

<a href="http://example.com" class="btn">My Link</a>

当然,这不会阻止链接在单击时运行。以上链接将带我们到http://example.com.为了防止出现这种情况,我们可以添加一段简单的jQuery代码,以使用禁用的类来调用事件的锚定标记为目标。preventDefault()

$('body').on('click', 'a.disabled', function(event) {
    event.preventDefault();
});

我们可以使用toggleClass()切换禁用的类:

jQuery.fn.extend({
    disable: function(state) {
        return this.each(function() {
            var $this = $(this);
            $this.toggleClass('disabled', state);
        });
    }
});

// Disabled with:
$('a').disable(true);

// Enabled with:
$('a').disable(false);

JSFiddle禁用链接演示。

然后,我们可以扩展上面的disable函数,以检查我们试图使用is()禁用的元素类型。这样,我们可以toggleClass(),如果它不是输入按钮元素,或者切换禁用的属性,如果它是:

// Extended disable function
jQuery.fn.extend({
    disable: function(state) {
        return this.each(function() {
            var $this = $(this);
            if($this.is('input, button, textarea, select'))
              this.disabled = state;
            else
              $this.toggleClass('disabled', state);
        });
    }
});

// Disabled on all:
$('input, button, a').disable(true);

// Enabled on all:
$('input, button, a').disable(false);

完整的JSFIDLE组合演示。

值得进一步注意的是,上述函数也将适用于所有输入类型。

匿名用户

我想不出更简单/更容易的方法了!;-)

使用定位标记(链接):

<a href="#delete-modal" class="btn btn-danger" id="delete">Delete</a>

要启用定位标记,请执行以下操作:

 $('#delete').removeClass('disabled');
 $('#delete').attr("data-toggle", "modal");

要禁用定位标记,请执行以下操作:

 $('#delete').addClass('disabled');
 $('#delete').removeAttr('data-toggle');

匿名用户

假设您有文本字段和提交按钮,

<input type="text" id="text-field" />
<input type="submit" class="btn" value="Submit"/>

要禁用任何按钮,例如submit按钮,您只需将disabled属性添加为,

$('input[type="submit"]').attr('disabled','disabled');

执行上述行后,您的提交按钮html标记将如下所示:

<input type="submit" class="btn" value="Submit" disabled/>

请注意,添加了“disabled”属性。

用于启用按钮,例如当您在文本字段中有一些文本时。您将需要删除禁用属性以启用按钮,

 if ($('#text-field').val() != '') {
     $('input[type="submit"]').removeAttr('disabled');
 }

现在,上面的代码将删除“disabled”属性。