jQuery .attr(“disabled”, “disabled”) 在 Chrome 中不起作用

发布于 2024-11-08 17:37:45 字数 815 浏览 0 评论 0原文

不知道为什么这不起作用。

当人们单击我的应用程序的“编辑”按钮时,禁用的文本字段将变为可编辑:

$("#bewerken").click(function(e)    {
    $("input[disabled='disabled']").removeAttr('disabled');
});

然后我想在用户保存时再次禁用文本字段;我将此代码绑定到我的保存按钮:

$("#save_school_changes").click(function(e) {
    //stuff

    $.ajax({
        type: "POST",
        url: "/school/save_changes",
        data: { //stuff },
        success: function(data)
        {
            $("#feedback_top").html("<p>" + data['message'] + "</p>").slideDown('slow').delay(2000).slideUp();
            $("input[type='text']").attr('disabled', 'disabled');

        }
    });

    e.preventDefault();
});

据我所知,这应该再次禁用文本字段。然而,这似乎在 Chrome 中不起作用。它在 Firefox 中确实有效。我还没有机会在 IE 或 Safari 中进行测试。有什么办法可以让这个在 Chrome 中也能工作吗?多谢!

Not sure why this isn't working.

When people click the 'edit' button of my application, the disabled textfields become editable:

$("#bewerken").click(function(e)    {
    $("input[disabled='disabled']").removeAttr('disabled');
});

I then want to disable the textfields again when the user saves; I have this code bound to my save button:

$("#save_school_changes").click(function(e) {
    //stuff

    $.ajax({
        type: "POST",
        url: "/school/save_changes",
        data: { //stuff },
        success: function(data)
        {
            $("#feedback_top").html("<p>" + data['message'] + "</p>").slideDown('slow').delay(2000).slideUp();
            $("input[type='text']").attr('disabled', 'disabled');

        }
    });

    e.preventDefault();
});

As far as I know, this should disable the textfields again. However, this does not seem to be working in Chrome. It does work in Firefox. I haven't had the chance to test in IE or Safari yet. Is there any way to make this work in Chrome aswell? Thanks a lot!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

南城追梦 2024-11-15 17:37:45

如果您使用的是 jQuery < 1.6
这样做:

jQuery("input[type='text']").attr("disabled", 'disabled');

如果您使用的是 jQuery 1.6+:

jQuery("input[type='text']").prop("disabled", true);

请参阅此问题:.prop() vs .attr() 参考原因。

或者您可以尝试以下操作:

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

请参阅此处以获取有关 :text 的信息

If you are using jQuery < 1.6
do this:

jQuery("input[type='text']").attr("disabled", 'disabled');

If you are using jQuery 1.6+:

jQuery("input[type='text']").prop("disabled", true);

See this question: .prop() vs .attr() for references why.

Or you can try this:

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

see here for info on :text

忆离笙 2024-11-15 17:37:45

对我来说,这些答案都不起作用,但我终于找到了一个有效的答案。

我需要为 IE 添加这个 -

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

我还必须为 Chrome 和 Firefox 添加这个 -

$('input:text').AddClass("notactive");

还有这个 -

<style type="text/css">
    .notactive {
        pointer-events: none;
        cursor: default;
    }
 </style>

For me, none of these answers worked, but I finally found one that did.

I needed this for IE-

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

I also had to add this for Chrome and Firefox -

$('input:text').AddClass("notactive");

and this -

<style type="text/css">
    .notactive {
        pointer-events: none;
        cursor: default;
    }
 </style>
若无相欠,怎会相见 2024-11-15 17:37:45

如果您要从输入中删除所有禁用的属性,那么为什么不这样做:

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

然后在ajax成功之后:

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

确保在提交之前使用删除禁用的属性,否则它不会提交该数据。如果需要在更改之前提交,则需要使用readonly代替。

if you are removing all disabled attributes from input, then why not just do:

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

Then after ajax success:

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

Make sure you use remove the disabled attribute before submit, or it won't submit that data. If you need to submit it before changing, you need to use readonly instead.

七婞 2024-11-15 17:37:45

这是一篇旧帖子,但我这个解决方案都不适合我,所以如果有人觉得这有帮助,我会发布我的解决方案。

我刚刚遇到了同样的问题。

就我而言,我需要禁用的控件是带有子下拉菜单的用户控件,我可以在 IE 中禁用它,但不能在 Chrome 中禁用。

我的解决方案是使用该代码禁用每个子对象,而不仅仅是用户控件:

$('#controlName').find('*').each(function () { $(this).attr("disabled", true); })

它现在在 Chrome 中为我工作。

It's an old post but I none of this solution worked for me so I'm posting my solution if anyone find this helpful.

I just had the same problem.

In my case the control I needed to disable was a user control with child dropdowns which I could disable in IE but not in chrome.

my solution was to disable each child object, not just the usercontrol, with that code:

$('#controlName').find('*').each(function () { $(this).attr("disabled", true); })

It's working for me in chrome now.

童话里做英雄 2024-11-15 17:37:45

尝试 $("input[type='text']").attr('disabled', true);

Try $("input[type='text']").attr('disabled', true);

我们只是彼此的过ke 2024-11-15 17:37:45

这里:
http://jsbin.com/urize4/edit

实时预览
http://jsbin.com/urize4/

您应该使用“readonly”喜欢:

$("input[type='text']").attr("readonly", "true");

Here:
http://jsbin.com/urize4/edit

Live Preview
http://jsbin.com/urize4/

You should use "readonly" instead like:

$("input[type='text']").attr("readonly", "true");
待"谢繁草 2024-11-15 17:37:45

您是否尝试过 prop()

好吧 prop() 似乎对我有用

Have you tried with prop() ??

Well prop() seems works for me.

赏烟花じ飞满天 2024-11-15 17:37:45

我的问题是,使用禁用属性的元素需要定义为表单元素,即输入类型才能工作。两者都与 attr() 和 prop() 一起使用,但为了将来的可维护性而选择了后者。

My issue with this was that the element using the disabled attr needed to be defined as a form element, .ie input type for it to work. Both worked with attr() and prop() but chose the latter for future maintainability.

渡你暖光 2024-11-15 17:37:45

大多数禁用属性不适用于 HTML-5 及以上的锚标记。因此,我们将其更改为“按钮”,并使用适当的颜色、边框样式等对其进行相应的样式设置。对于用户在 Chrome 中遇到的任何类似问题,这是最合适的解决方案。只有少数元素支持“disabled”属性:
Span 、选择、选项、文本区域、输入、按钮。

Mostly disabled attribute doesn't work with the anchor tags from HTML-5 onwards. Hence we have change it to ,let's say 'button' and style it accordingly with appropriate color,border-style etc. That's the most apt solution for any similar issue users are facing in Chrome . Only few elements support 'disabled' attribute:
Span , select, option, textarea, input , button.

疯了 2024-11-15 17:37:45

更好地使用类

$("#...").addClass("disabled");
$("#...").removeClass("disabled");

Better to use the class

$("#...").addClass("disabled");
$("#...").removeClass("disabled");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文