Asp.net 什么';这是CSS样式,我需要使只读文本框控件看起来被禁用

Asp.net 什么';这是CSS样式,我需要使只读文本框控件看起来被禁用,asp.net,javascript,css,Asp.net,Javascript,Css,为了预防“你为什么要这样做”的问题,我回答说: 如果单击了另一个控件,我将进行ajax调用以获取服务器生成的值并将其填充到文本框中。然后,在客户端,我将控件设置为readOnly(我不想禁用控件,因为我需要它进行回发,所以我设置了readOnly属性) 不幸的是,作为只读,它看起来并不是“禁用的” 我想通过执行.addClass来获得禁用的文本框外观 我已经尝试过各种款式,但我还没有接近那个样子 顺便说一句,这将是在IE中(可能是IE7或更低,所以我恐怕没有轮廓样式) 感激地接受任何想法。最好的

为了预防“你为什么要这样做”的问题,我回答说:

如果单击了另一个控件,我将进行ajax调用以获取服务器生成的值并将其填充到文本框中。然后,在客户端,我将控件设置为readOnly(我不想禁用控件,因为我需要它进行回发,所以我设置了readOnly属性)

不幸的是,作为只读,它看起来并不是“禁用的”

我想通过执行.addClass来获得禁用的文本框外观

我已经尝试过各种款式,但我还没有接近那个样子

顺便说一句,这将是在IE中(可能是IE7或更低,所以我恐怕没有轮廓样式)


感激地接受任何想法。

最好的方法是以正常方式禁用文本框,然后拍摄页面的屏幕截图并将其加载到图像编辑器程序中,然后获取文本框背景颜色、边框颜色等。然后您可以通过CSS进行设置,如下所示:

input.readOnlyTextBox
{
    background-color: #F2F2F2 !important;
    color: #C6C6C6;
    border-color: #ddd;
}

请记住,尽管不同浏览器的禁用外观可能略有不同,但这将使您获得近似的禁用外观。

不同浏览器的禁用表单元素的外观不同。如果你不想让你的网站看起来不一致和邋遢,那么你应该设置所有输入元素的样式,或者至少设置所有复选框的样式-启用、禁用和只读。然后,您可以确定只读输入的外观,而无需尝试匹配四个或五个不同的浏览器

我不想禁用控件,因为我需要它来回发,所以我设置了readOnly属性

将其设置为disabled,并创建一个具有相同名称、包含相同值的隐藏输入,以进行真正的提交


这是一种黑客行为,但在所有浏览器中可靠地获得正确的“禁用”外观的唯一方法是真正使用“禁用”。不同平台、浏览器、设置和主题之间的样式太不一致,您无法可靠地复制它。

我可以想出两种方法

  • 使用CSS定位在字段顶部放置一个“虚拟”禁用字段。这样,它可以匹配浏览器使用的任何样式。如果用户单击它,则他们正在“禁用”字段中单击
  • 与#1类似,为要提交的值使用隐藏字段。“显示”字段只是用于显示目的的一个额外字段,可以禁用/启用该字段,并在数据处理时忽略该字段

  • 我刚玩过。我正在使用JS和JQuery禁用输入项。在一个表单上,我有一个带有“disabler”类的复选框,并且将要禁用的项标记为“disabler”类。
    面临与您相同的问题,并使用JQuery DOM操作动态放置和移除隐藏字段解决了此问题。跨浏览器正常工作。
    此函数与disabler.onClick和form.onLoad绑定:

    $.My.InitDisabler = function() {
        if (!$('.disabler').attr('checked')) {
            $('.disableable').each(function() {
                $(this).attr("disabled", "true");
                var templ = '<input name="{0}" type="hidden" value="{1}" class="disable_hdn" />';
                $(this).after($.format(templ, $(this).attr("name"), $(this).val()));
            });
        }
        else {
            $('.disable_hdn').remove();
            $('.disableable').removeAttr("disabled");
        }
    }
    
    $.My.InitDisabler=function(){
    if(!$('.disabler').attr('checked')){
    $('.disableable')。每个(函数(){
    $(this.attr(“disabled”、“true”);
    var templ='';
    $(this).after($.format(temp,$(this.attr(“name”),$(this.val()));
    });
    }
    否则{
    $('.disable_hdn').remove();
    $('.disabled').removeAttr(“禁用”);
    }
    }
    
    我在一个相关的网站上找到了这条评论:

    要使“只读”输入字段看起来像“禁用”字段,请设置'style=“color:grey;background color:#f0;”Dan Nissenbaum 2011年2月28日5:05

    我试过了,效果很好

    总而言之:

    style="color: grey; background-color: #F0F0F0;"
    

    我知道这个问题已经得到了回答,但我想给出我的CSS示例

    因为当我搜索解决方案时,如何设置输入字段的样式,使其看起来像是被禁用的,我总是得到这样的输入字段

    带边框-左侧和顶部有较深的颜色等。 因此,一个用户使用这个CSS代码解决了这个问题

    input[readonly]{
      border-color: darkgrey;
      border-style: solid;
      border-width: 1px;
      background-color: rgb(235, 235, 228);
      color: rgb(84, 84, 84);
      padding: 2px 0px;
    }
    
    拍了一张照片,你们可以仔细看看

    它在Chrome上看起来不错,在其他浏览器上你需要修改一下颜色。就像在Firefox中一样,您也需要将颜色和背景颜色更改为等

    background-color: rgb(240, 240, 240);
    color: rgb(109, 109, 109);
    

    是的,我怀疑如果没有大纲风格(IE7似乎不支持),我会很挣扎。正是这种“双”边框让我在造型上遇到了麻烦当然比搞乱CSS要好得多。虽然我们正在进行狡猾的黑客攻击,但您也可以在提交之前启用这些字段。