当用户在TextInput
中输入文字时,会调用onChangeText
和onChange
。
我从event
回调中获得onChange
,可以从event.nativeEvent.text
获取最新更新的文字。
我从text
回调中获得onChangeText
,可以从中获取最新更新的文字。
但我只想要新输入的文字/字母。怎么弄这个?
例如: -
我们假设我们在som
中有TextInput
作为文字,现在只要用户输入e
,我只需要 e
而不是全文some
。
有什么解决方法吗?
答案 0 :(得分:0)
要仅获取新输入的文本,您可以使用TextInput的 onChange 功能,如下所示: -
<TextInput
onChange={(event) => {console.log(event.nativeEvent.data)}}
onChangeText={(val) => {console.warn(val)}}
/>
如上所述,onChangeText将为您提供完整的文本,但您可以使用onChange中的事件来获取新的字母。
修改强>
根据您的本机新版本,您可以在 event.nativeEvent.text 中获得完整的新文字,而在 event.nativeEvent.data 中则无法获取数据。因此,根据您的要求,您现在可以使用以下代码: -
<TextInput
onChange={(evnt)=>{
let newText = [];
let oldText = [];
for(let i=0;i<evnt.nativeEvent.text.length;i++) {
newText.push(evnt.nativeEvent.text[i]);
if(this.state.val[i]) {
oldText.push(this.state.val[i]);
}
}
let newLetter = '';
for(let j=0;j<newText.length;j++) {
if(newText[j] !== oldText[j]) {
newLetter = newText[j];
break;
}
}
console.log(newLetter);
}}
onChangeText={(val)=>{
console.log(val);
this.setState({val});
}}
/>
您将在 newLetter 的控制台中获得新输入的字母。如果我找到与此相关的任何其他内容,我会告诉您,但现在您可以使用此方法:)
答案 1 :(得分:0)
在纯js中解决此问题的一种方法是使用字符串
来尝试getNewChar(str){
return str[str.length - 1];
}
答案 2 :(得分:0)
我们可以通过
获取新输入的字母在onSelectionChange
中使用Input
道具。我们可以从event
获得onSelectionChange
,我们可以从cursor
获得cursor
位置。通过 <Input
...
onChangeText={this.handleMessageChange}
onSelectionChange={this.handleMessageSelectionChange}
...
/>
位置和全文,我们可以轻松获得新输入的字母。
实施例: -
handleMessageChange = (message: string) => {
this.setState({ message });
};
handleMessageSelectionChange = (event: Object) => {
const { selection } = event.nativeEvent;
this.setState({ selection });
};
方法
getNewlyEnteredLetters = (): string => {
const { selection, message } = state;
const { start, end } = selection;
return start === end ? message[start -1 ] : message[message.length - 1]
}; // start === end implies that new letters are entered and not selection is made.
现在,无论何时您想要新输入的字母,都可以获得
<script>
$.ajax({
url:url, /* ./ajax/data.json */
type:'post',
dataType:'text', /* text,html,json,jsonp */
/*contentType: 'application/json',*/
async:true,
success: function(data){
console.log(arguments);
alert('success');
},
error: function(){
alert('failed');
}
});
</script>