2016-06-28 50 views
6

被按下多textInput当进,什么时候用户按回车键,我想达到的目标:如何防止新的生产线在反应母语

  • 保持的TextInput焦点,当用户按回车键。
  • 防止添加新行。

我没有看到任何道具可以做到,任何人都有想法?

react-native版本是0.28+,需要支持ios和android。

+1

@Ctc这不是重复的。你的问题是针对网络的,而不是原生的。 –

+1

具有相同的确切问题。清理textinput在文本变化回调中的价值不仅会导致编辑器本身闪烁,而且还会改变提示等等,所以很明显会发生某些事情 - 这不是一种好的用户体验。仍在寻找更好的解决方案。这不是一个DUP。 – Moonwalker

+0

你有没有找到这个解决方案?我也想阻止一个变化。 – Noitidart

回答

-8

这里是例如:

$(".Post_Description_Text").keydown(function(e) { 
 
    if (e.keyCode == 13 && !e.shiftKey) { 
 
    e.preventDefault(); 
 
    alert("New line entered"); 
 
    } 
 
});
.Post_Description_Text { 
 
    width: 500px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
 
<textarea name="comment_text" id="comment_text" class="Post_Description_Text"></textarea>

+3

react-native,而不是网络... – musicode

1

在的TextInput传递道具

blurOnSubmit = {true},然后在的onblur道具集中使用REF TextInput字段,这两个将进入一个阻止新行和焦点保留在文本输入字段。如果你只想阻止用户输入新行blurOnSubmit = {true}就足够了

这里的缺点是你可以看到键盘隐藏一会然后弹出。 有点像黑客。希望有人可以想出另一个或即兴创作

+0

谢谢@Tharzeez brignging这给我的关注。这确实是一个黑客,我会测试它,让你知道它是如何工作的。你在Android上测试了什么? iOS版?都? – Noitidart

+1

我在ios上测试过,我会检查android并更新 – Tharzeez

+0

非常感谢!我没有得到测试的机会,但是当我测试时我也会让你知道。 – Noitidart

0

您可以使用多行设置您的TextInput,并将blurOnSubmit设置为false。 这将保持键盘,并允许输入多行。

并使用onKeyPress道具仅用于发送消息。

onKeyPress({ nativeEvent: { key: keyValue } }) { 
    if (keyValue === "Enter") this.sendMessage(); 
} 

onMessageInputChange(message) { 
    this.setState({ 
     message, 
    }); 
} 

这应该在Android和iOS工作。

  <TextInput 
       value={message} 
       onChangeText={this.onMessageInputChange} 
       onKeyPress={this.onKeyPress} 
       returnKeyType="send" 
       blurOnSubmit={false} 
       multiline 
      />