Reactjs formcontrol内的react引导只读输入

Reactjs formcontrol内的react引导只读输入,reactjs,react-bootstrap,form-control,readonly-attribute,Reactjs,React Bootstrap,Form Control,Readonly Attribute,我正在使用react引导,这个框架提供了一些很好的表单控件 但是我想使FormControls中生成的输入字段具有readonly=“readonly”属性。这样,该字段看起来与我的其他表单控件相同,但在IOS上不提供键盘输入 在我的例子中,输入将由日历选择器提供,该选择器将由popover触发 是否有人知道如何为FormControl指定参数readonly=“readonly”,以便浏览器中生成的输入字段具有prop readonly=“readonly” 很多人都想知道答案 react引导

我正在使用react引导,这个框架提供了一些很好的表单控件

但是我想使FormControls中生成的输入字段具有readonly=“readonly”属性。这样,该字段看起来与我的其他表单控件相同,但在IOS上不提供键盘输入

在我的例子中,输入将由日历选择器提供,该选择器将由popover触发

是否有人知道如何为FormControl指定参数readonly=“readonly”,以便浏览器中生成的输入字段具有prop readonly=“readonly”


很多人都想知道答案

react引导看起来不是问题,而是react本身的问题。 React未将“readonly”属性传输到生成的(真实)DOM元素:

React引导创建以下React虚拟dom输入:

但是,react生成了以下真正的DOM元素,省略了readonly属性:

在您的情况下,使用“禁用”可能会有所帮助:

<FormControl
   disabled
   type="text"
   placeholder="Enter text"
   onChange={this.handleChange}
 />

有关只读和禁用的区别,请参见此处:

我在React的github repo中创建了一个问题:


更新 在得到上述问题的答案后。您需要使用camelcase:readOnly编写它

因此,它应该是:

<FormControl
   readOnly
   type="text"
   placeholder="Enter text"
   onChange={this.handleChange}
 />

旧问题,新方法:利用onChange事件控制是否调用handleChange事件。我将editForm定义为一个由按钮控制的道具值,以查看我是处于查看模式还是编辑模式

例如:

<TextField
        name="id"
        label="ID
        value={entityState.entity.Id || ""}
        onChange={(a) => (props.formEdit ? handleChange(a) : "")}
/>

请您的问题显示您遇到问题的部分代码,然后我们可以尝试帮助您解决具体问题。你也应该阅读。在某些情况下,它可以是只读的,所以当它不是只读的时候,你需要处理它change@omerts但是按照您的回答方式,它在任何情况下都是只读的?@joedotn您不能将它与:readOnly={false}| | readOnly={true}@omerts一起使用。不,没有readOnly=true/false这样的东西;如果它存在,则假定它是只读的!您可以让readOnly=“whatevs”、readOnly=“true”、readOnly=“false”都表示相同的意思。@omerts是的,您是100%正确的,它可以工作!现在这将是我和其他人必须记住的事情。“false”和{false}的行为完全不同——这是完全出乎意料的(在我看来,图书馆允许这样做是不好的)