26

我有一个简短的电话号码文本字段。然后我想屏蔽这个表单字段,如 (0)xxx xxx xx xx。

我正在尝试将react-input-mask插件与Material-UI一起使用。但是,如果我想更改输入值,这不会更新我的主要 TextField。

        <TextField
          ref="phone"
          name="phone"
          type="text"
          value={this.state.phone}
          onChange={this.onChange}
        >
          <InputMask value={this.state.phone} onChange={this.onChange} mask="(0)999 999 99 99" maskChar=" " />            
        </TextField>

实际上,我找不到任何使用 Material-UI 进行遮罩的文档。我试图弄清楚如何与其他插件一起使用。

4

5 回答 5

24

更新

版本:material-ui 0.20.2,react-input-mask 2.0.4

似乎 API 发生了一些变化:

<InputMask
  mask="(0)999 999 99 99"
  value={this.state.phone}
  disabled={false}
  maskChar=" "
>
  {() => <TextField />}
</InputMask>

演示

编辑 throbbing-bird-9qgw9

原来的

这应该可以解决问题:

<TextField
  ref="phone"
  name="phone"
  type="text"
  value={this.state.phone}
  onChange={this.onChange}
>
  <InputMask mask="(0)999 999 99 99" maskChar=" " />
</TextField>

演示:

编辑 yl8p9jvq9

于 2017-08-18T18:34:10.487 回答
21

对于当前版本的 Material-UI 和 react-input-mask,以下答案有效:

          <InputMask
            mask="(1)999 999 9999"
            value={self.state.inputValue}
            onChange={this.getTextFieldValue}
            className={this.props.classes.textField}
          >
            {() => <TextField
              id={attribute}
              label={attribute}
              name={attribute}
              className={this.props.classes.textField}
              margin="normal"
              type="text"
              />}
          </InputMask>
于 2018-07-30T17:50:20.593 回答
2

这对当前版本有效react-input-maskmaterial-ui

<InputMask
  mask="(0)999 999 99 99"
  value={this.state.phone}
  onChange={this.onChange}
>
  {() => <TextField />}
</InputMask>
于 2018-06-19T09:54:12.193 回答
0
<InputMask 
 mask="99999" // Format you need implemented
 value={cellNumber}
 onChange={this.inputHandler}
 placeholder="Cell Number"
 name="cellNumber" 
 required disableUnderline 
 style={style.inputfeild} 
 maskChar= {'_'}> // To display when there is no character typed

 {(inputProps) =>
  <Input {...inputProps}/>}

 </InputMask>

只需将所有道具提供给 InputMask,然后将它们作为输入道具传递给显示 Textfield 或 Input 字段的回调方法,它应该可以正常工作。

于 2021-03-04T20:17:23.093 回答
0

问题:

codeandbox.io/s/q8v1259oq6请检查我的标签测试 floatingLabelText 是隐藏的我如何解决。——蒂莉娜·桑帕斯

解决方法:

您可以使用“floatingLabelFixed”道具控制标签位置。在您的 handleChange 中查看状态输入值。

...当创造价值时:

constructor(props) {
    super(props);
    let value = props && props.value ? props.value : '';
    let floatingLabelFixed = !!value;

    this.state = {
        value,
        floatingLabelFixed,
    };

    this.handleChange = this.handleChange.bind(this);
}

...编辑时(onChange):

handleChange(event) {
        let value = event && event.target && event.target.value ? event.target.value : '';
        let floatingLabelFixed = !!value;
        this.setState({
            value,
            floatingLabelFixed
        });
   }

...您的输入:

<TextField
        onChange={this.handleChange}
        value={this.state.value}
        floatingLabelFixed={this.state.floatingLabelFixed}/>
于 2017-11-23T19:39:40.620 回答