reactjs 如何屏蔽我的材质-UI文本字段?

5lwkijsr  于 2023-01-04  发布在  React
关注(0)|答案(6)|浏览(107)

我有一个文本字段的电话号码在一个简短的形式。然后我想掩盖这个形式的字段一样(0)xxx xxx xx xx。
我尝试使用react-input-mask插件与Material-UI。但如果我想改变输入值,这是不更新我的主要文本字段。

<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>

实际上,我找不到任何关于使用材质界面进行蒙版的文档。我正在尝试弄清楚如何使用其他插件。

whitzsjs

whitzsjs1#

更新

版本:材料-用户界面0.20.2,React-输入-掩码2.0.4
API似乎发生了一些变化:

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

演示

原件

这应该可以达到目的:

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

演示:

4ioopgfo

4ioopgfo2#

对于当前版本的材料-UI和React-输入-掩码,以下答案有效:

<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>
n7taea2i

n7taea2i3#

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

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

emeijp434#

问题:
codesandbox.io/s/q8v1259oq6请检查这个我的标签测试浮动LabelText是隐藏的我如何解决. -Thilina Sampath
解决方法:
您可以使用"floatingLabelFixed"属性控制标签位置。在您的手柄上更改外观以显示输入值。
...创造价值时:

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}/>
olmpazwi

olmpazwi5#

您也可以使用https://github.com/text-mask/text-mask。看起来是一个可靠的项目,尽管它不再被维护了。
它提供了一个demo page for testing stuffsome addons,我成功地使用它们创建了一个自定义价格输入字段(带有材料ui TextField组件)。
还有an example codesandbox,我在文档页面上找到了一些,我相信。
将代码和框示例复制/粘贴到此处(您需要根据需要调整蒙版):

// ... React imports.

import MaskedInput from "react-text-mask";
import createAutoCorrectedDatePipe from "text-mask-addons/dist/createAutoCorrectedDatePipe";

const autoCorrectedDatePipe = createAutoCorrectedDatePipe("mm/dd/yyyy", {
  minYear: 1900,
  maxYear: 2099
});

function TextMaskCustom(props) {
  const { inputRef, ...other } = props;

  return (
    <MaskedInput
      {...other}
      ref={ref => {
        inputRef(ref ? ref.inputElement : null);
      }}
      mask={[/\d/, /\d/, "/", /\d/, /\d/, "/", /\d/, /\d/, /\d/, /\d/]}
      placeholderChar={"\u2000"}
      pipe={autoCorrectedDatePipe}
      guide
      keepCharPositions
    />
  );
}

// ...

<div>
  <TextField
    label="react-text-mask"
    value={values.textmask}
    onChange={handleChange("textmask")}
    InputProps={{
      inputComponent: TextMaskCustom
    }}
    helperText="mm/dd/yyyy"
    variant="outlined"
    margin="dense"
  />
</div>
np8igboo

np8igboo6#

<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字段,它应该可以正常工作。

相关问题