【问题标题】:jQuery UI styled text input boxjQuery UI 风格的文本输入框
【发布时间】:2011-10-11 17:44:01
【问题描述】:

jQuery UI 使用$('button').button(); 使按钮看起来更漂亮。

是否有文本输入框的等价物?

【问题讨论】:

    标签: css jquery-ui user-interface


    【解决方案1】:

    您问题中的示例引用了 jQuery UI 的 Button 小部件。这个小部件的想法是有一系列选项,包括易于主题化。输入框也有一个小部件。我知道的其中一些如下:

    1. Auto-Complete Widget
    2. Default Text Plugin 输入框
    3. Text Limit Plugin 用于输入框/文本区域

    如果不是小部件的话,还有很多这样的插件。您可以随时在页面http://plugins.jquery.com/中的搜索框浏览/搜索

    【讨论】:

    【解决方案2】:

    没有什么可以阻止你做$("input").button()...我喜欢这个:

    $('input:text, input:password')
      .button()
      .css({
              'font' : 'inherit',
             'color' : 'inherit',
        'text-align' : 'left',
           'outline' : 'none',
            'cursor' : 'text'
      });
    

    A fuller example.

    【讨论】:

    • .button() 给你 (1) 很多 css; (2) 悬停/聚焦/模糊事件处理程序。当然,您可以使用 .button().addClass('my-textfield') 并将 css 添加到样式表中......这是一个更完整的示例:jsfiddle.net/UXdLQ
    • 另外,当您单击文本框时,您可能希望删除“mousedown”事件以阻止它添加“ui-state-active”类(将文本框变为白色)。使用 jQuery >= 1.7,您可以使用 .off('mousedown') 执行此操作。
    • @Corin - 看起来不错,但是当我将按钮大小缩小到 height:10px 时,Firefox 会剪切文本的顶部和底部。
    • 您可能还需要按照stackoverflow.com/a/18835405/477420中的建议删除“keydown”
    • 与其关闭所有 button() 行为,我更喜欢下面的答案,您只需添加 jQuery UI 样式类 - $('#thing').addClass("ui-widget ui-widget-content ui-corner-all ui-button"); - 并且可能会抛出 ui-state-default 来设置背景填充像按钮一样。
    【解决方案3】:

    ui-corner-all 类添加到您的输入中,并使用 CSS 为输入添加样式。

    $('input').addClass("ui-corner-all");
    

    http://jsfiddle.net/TTShr/

    【讨论】:

    • +1 这很好用。它不仅仅是使角落变圆。
    【解决方案4】:

    Corin的答案中添加.off('keydown'),以防止在输入或按下空格时框变白。

    【讨论】:

      【解决方案5】:

      总结一下,我想添加我的实现:

      $('input:text, input:password, input[type=email]').button()
        .addClass('ui-textfield')
        .off('mouseenter').off('mousedown').off('keydown');
      

      CSS 将是:

      .ui-textfield {
          font: inherit;
          color: inherit;
          background: none;
          text-align: inherit;
          outline: none;
          cursor: text;
      }
      

      在这里查看:http://jsfiddle.net/UXdLQ/1544/

      【讨论】:

        【解决方案6】:

        我知道这是旧的。但是,如果有人只是想让他们的输入看起来更 UIish,只需添加以下类:$('input').addClass("ui-widget ui-widget-content ui-corner-all");

        您也可以对类进行硬编码。

        【讨论】:

        • 这可能是最简单的方法,清晰且可维护。
        【解决方案7】:

        具有与按钮相同的角/字体/填充/间距,但没有按钮交互(悬停、活动等)

        HTML: input type="text" class="ui-button ui-widget ui-corner-all"

        如果你想对齐文本添加另一个自定义类

        CSS: .textfield { 文本对齐:左; }

        HTML: input type="text" class="ui-button ui-widget ui-corner-all textfield"

        【讨论】:

          【解决方案8】:

          我遇到了同样的问题,我想出了以下解决方案。在您的输入字段上使用这些类:

          ui-widget ui-state-default ui-corner-all

          您可以修改填充 - f.e.如果您在您的网站上select 元素 - 要统一。

          jQuery UI v1.11.4

          【讨论】:

            【解决方案9】:

            我非常喜欢简单地添加类的想法,所以我把它写成一个 jQuery 插件。这里的好处是,如果将来 jQueryUI 做一个版本,它很可能会使用相同的格式,所以转换会很容易。

            (function($)
            {
                $.fn.input = function ()
                {
                    return this.each(function ()
                    {
                        $(this).addClass("ui-widget ui-widget-content ui-corner-all ui-button");
                    });
                }
            })(jQuery);
            

            这样称呼:

            $('input, password').input();
            

            如果你想添加悬停效果等,只需将逻辑添加到

            return this.each(function ()
            {
                // display logic
            });
            

            编辑: 在附加类“ui-button”中添加以使它们与 .button() 具有相同的高度/填充等

            编辑 2: 事实证明,这是一个好主意,我为标签添加了一个版本,并允许传入自定义 CSS。

            // some styling for inputs
            (function($)
            {
                $.fn.input = function (css)
                {
                    if (!css)
                        css = {};
                    return this.each(function ()
                    {
                        $(this).addClass("ui-widget ui-widget-content ui-corner-all ui-button");
                        $(this).css(css);
                    });
                }
            })(jQuery);
            // and labels
            (function ($)
            {
                $.fn.label = function (css)
                {
                    if (!css)
                        css = {};
                    return this.each(function ()
                    {
                        $(this).addClass("ui-widget ui-button");
                        $(this).css(css);
                    });
                }
            })(jQuery);
            

            然后也为您的输入/标签设置样式。这些类/样式实际上不需要存在于任何地方。

            $(".client-input").input();
            $(".client-label").label({ "min-width": "125px", "text-align": "right" });
            

            像这样输出 UI - 输入和标签与按钮的样式相匹配。 (选择需要工作)

            【讨论】:

            • 您还可以将“ui-widget-content”更改为“ui-state-default”,使其具有与按钮相同的背景填充。或者只是添加“ui-state-default”,因为它会以您期望的方式覆盖。
            猜你喜欢
            • 2018-12-23
            • 1970-01-01
            • 1970-01-01
            • 2017-07-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-23
            相关资源
            最近更新 更多