Android 4.1.2默认浏览器 - 禁用输入字段的呈现问题

时间:2012-12-12 15:42:46

标签: android html css

似乎某些版本的默认android浏览器存在渲染问题。如果我创建一个页面,我有一些输入字段和一个按钮,当我禁用其他输入字段时,该按钮显示为灰色(除非这是在页面加载时完成的,你必须点击/缩放一点到让浏览器重新渲染。)

有趣的是,它不会将禁用的STYLE应用于按钮,而只是将其灰显。这是一个样本。

Link to editor jsfiddle
Link to embedded jsfiddle

CSS:

ul { list-style-type:none; }

.xxx {
    background: blue;
    color: white;
}

.xxx:disabled { background-color: red; }

HTML:

<div id="root">
    <ul>
        <li>
            <input name="x" id="enable" class="x" type="radio">Enable</input>
        </li>
        <li>            
            <input name="x" id="disable" class="x" type="radio">Disable</input>
        </li>            
    </ul>
    <input type="button" class="xxx" value="Button"></input>
</div>

JS:

$(function() {
    $('.x:eq(0)').prop('disabled', true);
});

注意事项:

  • 按钮 NOT 已禁用。点击它,它会暂时变为灰色。
  • 按钮的禁用状态有一种样式,将其背景颜色设置为红色(如果禁用该按钮,您将看到此工作),但该示例中的按钮不显示为红色,因此它甚至不仅仅是渲染残疾人的风格。它似乎主要是将不透明度设置为较低的值
  • 按钮前的按钮不会受到影响。 http://jsfiddle.net/YVFVZ/4/

任何想法如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

我终于明白了。我对这个解决方案并不满意,但似乎有效。

如果将输入包装在position: relative元素中,则可以解决问题。

答案 1 :(得分:0)

尝试使用此DOM

<div id="root"> <ul> <li> <input name="x" id="enable" class="x" type="radio" />Enable </li> <li>
<input name="x" id="disable" class="x" type="radio" />Disable </li>
</ul> <input type="button" class="xxx" value="Button" /> </div>

并且js为

$(function() {
    $('.x:eq(0)').prop('disabled', 'disabled');
});

可能会有所帮助。

答案 2 :(得分:0)

让我们清理一些HTML!

有一个小提琴 - Fiddle Link!

  1. 加入一些合适的标签
  2. 删除无效HTML 的结束</input>代码。让我们自己关闭它们以使它们漂亮(即使除非你使用XHTML,否则不需要这样做)。
  3. 删除<ul>,当我们可以使用一点CSS来定位表单元素时,这似乎是多余的。
  4. 将这些课程重命名为更相关的课程!
  5. HTML

    <div id="root">
        <input name="buttonState" id="enable" class="action" type="radio" />
        <label for="enable">Enable</label>
    
        <input name="buttonState" id="disable" class="action" type="radio" />
        <label for="disable">Disable</label>
    
        <input type="button" class="button" value="Button" />
    </div>
    

    的jQuery

    因此,您希望在单击启用单选按钮时启用该按钮,并在单击禁用单选按钮时禁用该按钮?这里:

    $('#disable').click(function () {
        $('.button').attr('disabled', true);
    });
    $('#enable').click(function () {
        $('.button').attr('disabled', false);
    });
    

    最后,CSS。

    .action {
        display: block;
        float: left;
        clear: left;
        margin: 0 10px;
    }
    label {
        display: block;
        margin: 10px 0;
    }
    .button {
        background: #00F;
        margin: 0 10px 10px 10px;
    }
    .button:disabled {
        background: #F00;
    }
    input, label {
        cursor: pointer;
    }
    

    可爱:)