2017-10-19 3 views
0

Ich versuche, die Höhe des Textfelds nach der Höhe des Inhalts zu ändern. Ich sehe, dass der Event-Handler die Höhe nicht ändert, da sie vom Bootstrap-Stil überschrieben wird. Bitte helfen Sie!Wie ändere ich die Höhe von Textarea mit Inhalt?

class PostForm extends React.Component { 
    constructor(props){ 
    super(props); 
    this.state = {titleHeight: '30', storyHeight: 1};              
    this.handleKeyUp = this.handleKeyUp.bind(this); 
    } 
    handleKeyUp(event){ 
    this.setState({titleHeight: document.getElementById('post_title').scrollHeight}); 
    this.setState({storyHeight: document.getElementById('post_story').scrollHeight}); 
    } 
    render() { 
     var csrfToken = $('meta[name=csrf-token]').attr('content'); 
     return (
      <form action='create' method='post' acceptCharset='UTF-8' className= "form-group"> 
      <input type='hidden' name='_method' value='patch'/> 
      <input type='hidden' name='utf8' value='✓' /> 
      <input type='hidden' name='authenticity_token' value={csrfToken} /> 
      <textarea id="post_title" name="post[title]" className="form-control boldText" style={formStyle.textArea} height={this.state.titleHeight} onKeyUp={this.handleKeyUp} placeholder="Title"/> 
      <textarea id="post_story" name="post[story]" className="form-control" style={formStyle.textArea} height={this.state.storyHeight} onKeyUp={this.handleKeyUp} placeholder="Start telling the story"/> 
      <input name="commit" type="submit" value="Post" className="btn" style={formStyle.button}/> 
      </form> 
     ); 
    } 
} 

const formStyle = { 
    textArea: { 
    border: 5, 
    boxShadow: 'none', 
    margin: 5, 
    overflow: 'hidden', 
    resize: 'none', 
    ariaHidden: 'true', 
    }, 
    button: { 
    backgroundColor: 'black', 
    color: 'white', 
    width: 70, 
    marginLeft: 18, 
    marginRight: 5, 
    }, 
} 

Antwort

2

Die textarea HTML component hat kein Attribut height aber ein Attribut rows, die Sie für diesen Zweck verwendet werden können (z <textarea rows={Math.round(this.state.storyHeight)} ... />).

Kein CSS-Stil wird überschreiben, was Sie im style Attribut übergeben, es funktioniert umgekehrt. Aber es gibt keine height in Ihrer formStyle Definition sowieso.

Verwandte Themen