0

我遇到需要将输入文本转换为大写的情况。一旦我们在输入字段中键入一些文本,它就需要将其转换为大写。

为此,我们有以下 css 样式:

 style="text-transform: uppercase"

使用这种样式,文本会自动以大写形式输入,因此我们不需要做任何额外的事情,但 Salesforce 中没有选项可以为字段添加样式。

有没有办法做到这一点?

4

1 回答 1

1

不幸的是,没有一种简单的方法可以将 CSS 样式添加到在编辑模式下出现在标准页面布局上的字段中。但是,您可能想探索一些选项(如下所列)。


视觉力量

您可以将样式属性添加到Visualforce (http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_inputText.htm) 或inputfield组件中的 [inputtext]。

<apex:inputtext value="{!Widget__c.Name}" style="text-transform:uppercase;" />

要改为添加 CSS 类,您可以使用该styleClass属性。不过,我相信这只会影响文本数据的显示。为了确保在保存到数据库时该值是大写的,请在onkeyup属性上使用此 JavaScript(如下)。

<apex:inputtext value="{!Widget__c.Name}" style="text-transform:uppercase;" onkeyup="var u=this.value.toUpperCase();if(this.value!=u){this.value=u;}" />

标准页面布局

选项 1:在标准页面布局中嵌入 Visualforce 页面

要在标准页面布局上执行此操作,您可以为您希望使用此功能的字段创建一个 Visualforce 页面。但是,这只会显示在记录视图中。它将在编辑中不可见。

Visualforce 页面看起来像这样(其中Widget__c替换为您正在使用的 sObject):

<apex:page standardController="Widget__c">
    <apex:form id="WidgetForm">
        <apex:actionFunction name="SavePost" action="{!save}" rerender="WidgetPanel" status="str" />
        <apex:outputpanel id="WidgetPanel">
            <apex:inputtext id="WidgetName" value="{!Widget__c.Name}" style="text-transform:uppercase;" onkeyup="var u=this.value.toUpperCase();if(this.value!=u){this.value=u;}" />
            <apex:commandbutton value="Save" styleClass="btn" onclick="SavePost();" />
            <apex:actionStatus startText="Loading..." stopText="" id="str"> </apex:actionStatus>
        </apex:outputpanel>
    </apex:form>
</apex:page>

然后在页面布局上,单击Visualforce Pages下方的类别FieldsButtons,然后通过将 Visualforce 页面组件拖到布局中,将 Visualforce 页面添加到页面布局中。请务必通过单击新 Visualforce 页面组件右上角的扳手来配置它的高度。

选项 2:在带有侧边栏组件的标准页面布局上使用 JavaScript

使用标准页面布局的另一个更复杂的选项是在包含 JavaScript 的侧边栏上添加一个主页组件。此选项需要对 JavaScript(或jQuery一个 JavaScript 库)有一定的了解。然后,JavaScript 可以找到该字段,为其添加text-transform:uppercase;样式,并将一个函数绑定到 keyup 事件以将所有输入的字符转换为大写 ( element.value.toUpperCase();)。有关此方法的更多信息,请查看Tehnrd 关于为 JavaScript 添加侧边栏组件的博客文章。他使用此方法显示和隐藏标准页面布局上的按钮,但可以对其进行修改以适合您的目的。

于 2012-04-19T14:27:16.167 回答