代码之家  ›  专栏  ›  技术社区  ›  animuson Hemanshu

在输入元素上使用文本转换实际上可以转换文本?[关闭]

  •  3
  • animuson Hemanshu  · 技术社区  · 14 年前

    考虑到文本转换是一个CSS属性,我不理解将文本转换设置为大写的输入字段中的文本在提交表单时是如何将大写文本发布到页面的。难道CSS不应该只修改页面的外观而不修改内容本身吗?如果我在表单中键入小写的内容,它不应该以小写形式提交,并且只以大写形式出现在表单字段中吗?

    我使用PHP来处理post变量,我输入的任何文本,如果文本转换设置为大写,则实际上都是大写的。我修改了一个小写的值,字符串“This is a test.”例如…如果删除测试并在输入字段中重新键入并提交,然后打印提交的值,它将打印出“这是一个测试”。重新键入的文本为大写,任何原始文本的大小写与以前相同。这只是一个小故障行为还是什么?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Álvaro González    14 年前

    测试代码:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head><title></title>
    <style type="text/css"><!--
    textarea, input{
        text-transform: uppercase;
    }
    --></style>
    </head>
    <body>
    
    <?
    
    if( !empty($_POST) ){
        echo '<pre>' . htmlspecialchars(print_r($_POST, TRUE)) . '</pre>';
    }
    
    ?>
    
    
    <form action="" method="post">
        <textarea name="textarea" rows="3" cols="40">Default</textarea>
        <input name="text" value="Default">
        <input type="submit">
    </form>
    
    </body>
    </html>
    

    有趣的发现:

    • 歌剧10忽略 text-transform: uppercase 在文本区域中
    • chrome 4发送了一个关于post表单的get请求
    • 我测试过的所有浏览器(WindowsXP)都没有您描述的行为:firefox 3.6,ie 6,ie7,ie8,opera 10…

    imho你很有可能使用javascript…

        2
  •  1
  •   Pointy    14 年前

    好吧,如果所有主要的浏览器确实改变了字段内容,那么您的关注只是哲学上的兴趣。可以说,对于输入字段 <h1> 元素)具有用户键入文本的屏幕外观 不同的 比实际提交的内容更不友好,更令人困惑。

    编辑 正在测试浏览器…

    • Windows上的Chrome4在视觉上应用样式,但提交的文本没有更改
    • Windows上的firefox 3.6以视觉方式应用样式,但提交的文本不会更改。
    • IE8以视觉方式应用样式,但提交的文本未更改

    因此,我开始怀疑是什么让您认为已发布的字段内容是由CSS规则转换的。