如何更改必填 * 字段中的星号颜色

Posted

技术标签:

【中文标题】如何更改必填 * 字段中的星号颜色【英文标题】:how to change the asterisk color in required * field 【发布时间】:2019-07-23 00:21:32 【问题描述】:

我的表单中有两个必填字段。我希望星号颜色应该是red。目前它显示为黑色。我正在使用材质 UI 反应库? 这是我的代码 https://codesandbox.io/s/r7lq1jnjl4 文件 https://material-ui.com/demos/text-fields/

<FormControl>
                  <TextField
                    required
                    InputLabelProps=
                      shrink: true
                    
                    id="standard-name"
                    label="Name"
                    margin="normal"
                    helperText="Some important text"
                  />
                </FormControl>

【问题讨论】:

【参考方案1】:

基于 documentation on how to customize components through theme overrides 的 FormLabel (which will also include InputLabel),您应该使用 createMuiTheme 并添加以下覆盖:

const formLabelsTheme = createMuiTheme(
  overrides: 
    MuiFormLabel: 
      asterisk: 
        color: '#db3131',
        '&$error': 
          color: '#db3131'
        ,
      
    
  
)

然后,您将 &lt;form&gt; 包装在 &lt;MuiThemeProvider&gt; 中,如下所示:

<MuiThemeProvider theme=formLabelsTheme>
  <form noValidate autoComplete="off">

...
...
...

  </form>
</MuiThemeProvider>

这是一个forked code sandbox,它演示了此代码的实际作用。

由于您已经创建了一个主题,您可以将覆盖放在该主题中,但您需要将您的 &lt;form&gt; 移动到代码中已有的 &lt;MuiThemeProvider&gt; 内。

生成的表单标签如下所示:

【讨论】:

【参考方案2】:

Alvin 的回答显示了如何在您的主题中全局执行此操作。您也可以通过InputLabel props 使用FormLabel asterisk class 逐案执行此操作。

以下是我更改的代码中的相关部分。另请注意,如果输入处于“错误”状态,星号的默认行为是红色。例如,如果您将error 属性添加到TextField,星号将显示为红色,但这也会对星号之外的样式产生其他影响。

const styles = 
  labelAsterisk: 
    color: "red"
  
;
<InputLabel
                    FormLabelClasses=
                      asterisk: this.props.classes.labelAsterisk
                    
                    required
                    shrink
                    htmlFor="age-native-simple"
                  >
                    Age
                  </InputLabel>
                  <TextField
                    required
                    InputLabelProps=
                      shrink: true,
                      FormLabelClasses: 
                        asterisk: this.props.classes.labelAsterisk
                      
                    
                    id="standard-name"
                    label="Name"
                    margin="normal"
                    helperText="Some important text"
                  />
const StyledApp = withStyles(styles)(App);

【讨论】:

【参考方案3】:

试试这个简单易行

render()
    const name = <p>Name<span style= color: "red"  >*</span></p>
    const email = <p>Email<span style= color: "red"  >*</span></p>
    .
    .
    .
    return (
        <div>

            <TextField type="text" label=name />//or Input tag
            <TextField type="email" label=email />//or Input tag
            .
            .
            .
        </div>
    )

【讨论】:

【参考方案4】:

根据最新版本的材料 UI。 IE。 "@mui/material": "^5.0.1"

我们可以这样做:

 <FormLabel required>Name:</FormLabel>

在主题中:

import  createTheme  from "@mui/material";

export const theme = createTheme(
  components: 
    MuiFormLabel: 
      styleOverrides: 
        asterisk: 
          color: "#db3131",
          "&$error": 
            color: "#db3131",
          ,
        ,
      ,
    ,
  ,
);

【讨论】:

【参考方案5】:

Mui v5 中:

const theme = createTheme(

  components: 
    MuiFormLabel: 
      styleOverrides: 
        asterisk: color:"red",
      ,
    ,
  ,

)

【讨论】:

以上是关于如何更改必填 * 字段中的星号颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django modelform 中的必填字段后添加 *?

如何在 django 的表单中添加红色星号以显示必填字段?

使用循环更改Java语言中的背景颜色

使用必填字段验证器更改文本框颜色。请不要扩展器控制

在 Bootstrap 3 中为必填字段添加星号

关注表单时如何更改表单中输入标签的颜色? [复制]