使用 jQuery 禁用/启用输入?

问:

$input.disabled = true;

或者

$input.disabled = "disabled";

哪个是标准方式?而且,相反,如何启用禁用的输入?

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

答1:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

jQuery 1.6+

要更改 disabled 属性,您应该使用 .prop() 函数。

$("input").prop('disabled', true);
$("input").prop('disabled', false);

jQuery 1.5 及以下

.prop() 函数不存在,但 .attr() 类似:

设置禁用属性。

$("input").attr('disabled','disabled');

要再次启用,正确的方法是使用 .removeAttr()

$("input").removeAttr('disabled');

在任何版本的 jQuery

你总是可以依赖实际的 DOM 对象,如果你只处理一个元素,它可能比其他两个选项快一点:

// assuming an event handler thus 'this'
this.disabled = true;

使用 .prop() 或 .attr() 方法的优点是您可以为一组选定的项目设置属性。

注意: 在 1.6 中,有一个 .removeProp() 方法,听起来很像 removeAttr(),但它不应该使用在像 ‘disabled’ 这样的原生属性上文档:

注意:请勿使用此方法删除本机属性,例如选中、禁用或选中。这将完全删除该属性,并且一旦删除,就不能再次将其添加到元素中。使用 .prop() 将这些属性设置为 false。

事实上,我怀疑这种方法有很多合法用途,布尔道具的完成方式是你应该将它们设置为 false 而不是像 1.5 中的“属性”对应物那样“删除”它们

顺便说一句,请记住,如果您想禁用所有表单输入控件 - 包括。复选框、收音机、文本区域等 - 您必须选择 ':input',而不仅仅是 'input'。后者只选择实际的 元素。

@CornelMasson input,textarea,select,button 比 :input 好用一点 - :input 作为选择器效率很低,因为它必须选择 * 然后循环遍历每个元素并按标记名过滤 - 如果您传递 4 标记名选择器直接它要快得多。此外,:input 不是标准 CSS 选择器,因此可能从 querySelectorAll 获得的任何性能提升都将丢失

这只是阻止用户访问它,还是实际上将其从 Web 请求中删除?

正如@ThomasDavidBaker 所指出的,使用 .removeProp("disabled") 会导致“属性被完全删除且不再被添加”的问题,在 Chrome 等浏览器的情况下,而在 Firefox 等浏览器上运行良好。我们在这里真的应该小心。始终使用 .prop("disabled",false)

.prop 或 .attr 都不足以禁用锚元素; .prop 甚至不会使“控件”变灰(.attr 会,但 href 仍处于活动状态)。您还必须添加一个调用 preventDefault() 的单击事件处理程序。

答2:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

只是为了新的约定 && 使其适应未来(除非 ECMA6 发生巨大变化(???):

$(document).on('event_name', '#your_id', function() {
    $(this).removeAttr('disabled');
});

$(document).off('event_name', '#your_id', function() {
    $(this).attr('disabled','disabled');   
});

吉克斯!为什么是 $(document).on('event_name', '#your_id', function() {...}) 而不是 $('#your_id').on('event_name', function() {...})。如 jQuery .on() documentation 中所述,前者使用委托并侦听冒泡到 document 的 所有 event_name 事件并检查它们是否匹配 #your_id。后者仅专门监听 $('#your_id') 事件,并且可以更好地扩展。

前者适用于在任何时候插入到 DOM 中的元素,后者仅适用于那些当时存在的元素。

@crazymykl 正确,但您不应添加页面上已存在 id 的元素。

答3:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

    // Disable #x
    $( "#x" ).prop( "disabled", true );
    // Enable #x
    $( "#x" ).prop( "disabled", false );

有时您需要禁用/启用表单元素,例如 input 或 textarea。 Jquery 通过将禁用属性设置为“禁用”来帮助您轻松实现这一点。例如:

  //To disable 
  $('.someElement').attr('disabled', 'disabled');

要启用禁用元素,您需要从此元素中删除“禁用”属性或清空它的字符串。例如:

//To enable 
$('.someElement').removeAttr('disabled');

// OR you can set attr to "" 
$('.someElement').attr('disabled', '');

参考:http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html

答4:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

$("input")[0].disabled = true;

或者

$("input")[0].disabled = false;

当然,这个问题是针对 jQuery 提出的,这正在改变纯 JavaScript 中的状态,但它确实有效。

这会改变 JavaScript 中的状态,但它仍然使用 jQuery 选择器来获取第一个输入。

但我不认为我们在这里制作 jquery 百科全书,如果答案有效,那就太好了

答5:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

您可以通过多种方式启用/禁用任何元素:

方法一

$("#txtName").attr("disabled", true);

方法二

$("#txtName").attr("disabled", "disabled");

如果您使用的是 jQuery 1.7 或更高版本,请使用 prop(),而不是 attr()。

$("#txtName").prop("disabled", "disabled");

如果您希望启用任何元素,那么您只需执行与禁用它的操作相反的操作。然而 jQuery 提供了另一种删除任何属性的方法。

方法一

$("#txtName").attr("disabled", false);

方法二

$("#txtName").attr("disabled", "");

方法 3

$("#txtName").removeAttr("disabled");

同样,如果您使用 jQuery 1.7 或更高版本,请使用 prop(),而不是 attr()。那是。这是您使用 jQuery 启用或禁用任何元素的方式。

答6:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

您可以将其放在代码中的全局位置:

$.prototype.enable = function () {
    $.each(this, function (index, el) {
        $(el).removeAttr('disabled');
    });
}

$.prototype.disable = function () {
    $.each(this, function (index, el) {
        $(el).attr('disabled', 'disabled');
    });
}

然后你可以写这样的东西:

$(".myInputs").enable();
$("#otherInput").disable();

虽然包装功能很方便,但您应该使用带有 disabled 属性的 prop 和 not attr 以使其正常工作(假设 jQuery 1.6 或更高版本)。

@TrueBlueAussie 使用 attr 有什么缺点?我在一些项目中使用上面的代码,据我记得它工作正常

明显的例外是具有幕后属性的控件。最著名的是复选框的 checked 属性。使用 attr 不会得到相同的结果。

答7:

huntsbot.com – 高效赚钱,自由工作

像这样使用,

 $( "#id" ).prop( "disabled", true );

 $( "#id" ).prop( "disabled", false );

答8:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

如果您只想反转当前状态(如切换按钮行为):

$("input").prop('disabled', ! $("input").prop('disabled') );

谢谢,我对它的切换也有同样的看法; $("input").prop('disabled', function(i, v) { return !v; });

答9:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

这对我有用

$("#values:input").attr("disabled",true);
$("#values:input").attr("disabled",false);

答10:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

2018 年更新:

现在不再需要 jQuery 并且已经有一段时间了,因为 document.querySelector 或 document.querySelectorAll(用于多个元素)与 $ 几乎完全相同,加上更明确的 getElementById、getElementsByClassName、getElementsByTagName

禁用“输入复选框”类的一个字段

document.querySelector('.input-checkbox').disabled = true;

或多个元素

document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);

这个问题专门询问了 jQuery ......但同样你的陈述是正确的,值得知道当有多个元素时不再需要使用 jQuery。

答11:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

您可以使用 jQuery prop() 方法来禁用或启用表单元素或使用 jQuery 动态控制。 prop() 方法需要 jQuery 1.6 及更高版本。

例子:


        $(document).ready(function(){
            $('form input[type="submit"]').prop("disabled", true);
            $(".agree").click(function(){
                if($(this).prop("checked") == true){
                    $('form input[type="submit"]').prop("disabled", false);
                }
                else if($(this).prop("checked") == false){
                    $('form input[type="submit"]').prop("disabled", true);
                }
            });
        });
    

原文链接:https://www.huntsbot.com/qa/jW86/disable-enable-an-input-with-jquery?lang=zh_CN&from=csdn

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值