如何制作一个反应本机输入,向用户提供验证状态反馈。 [有效、Printine、错误、编辑]

2024-01-10

我希望输入能够随着用户键入而不断更新,然后失去焦点。反馈将是输入周围的边框。

1 Green: when valid
2 Amber: when typing and is in error state (Green when valid)
3 Red: when in error state and unfocused
4 Nothing: when input is pristine (not touched and empty)

实现这一目标的最佳方法是什么?

理想情况下,这适用于 iOS 和 Android。


TextInput 有两个函数可用于实现此目的:

onBlur https://facebook.github.io/react-native/docs/textinput.html#onblur and 更改文本 https://facebook.github.io/react-native/docs/textinput.html#onchangetext

要动态设置 TextInput 上的样式,您可以为 bordercolor 附加一个变量,如下所示:

<TextInput
  onBlur={ () => this.onBlur() }
  onChangeText={ (text) => this.onChange(text) }
  style={{ borderColor: this.state.inputBorder, height: 70, backgroundColor: "#ededed", borderWidth: 1 }} />

然后,通过正则表达式或模式匹配器传递 onChangeText 函数的结果,以实现您想要实现的任何结果。

我在这里建立了一个工作项目,检查是否存在空格,并抛出您想要的错误。您可以对其进行编辑,使其更具体地满足您的需求,但基本前提应该是相同的。我还为实现该功能的工作项目添加了下面的代码:

'use strict';

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TextInput
} = React;

var SampleApp = React.createClass({

  getInitialState: function() {
    return {
        inputBorder: '#eded',
      defaultVal: ''
    }
  },

  onBlur: function() {
    console.log('this.state.defaultVal', this.state.defaultVal)
    if(this.state.defaultVal.indexOf(' ') >= 0) {
        this.setState({
        inputBorder: 'red'
      })
    }
  },

  onChange: function(text) {
    this.setState({
        defaultVal: text
    })
    if(text.indexOf(' ') >= 0) {
        this.setState({
        inputBorder: '##FFC200'
      })
    } else {
        this.setState({
        inputBorder: 'green'
      })
    }
  },

  render: function() {
    return (
      <View style={styles.container}>
        <View style={{marginTop:100}}>
            <TextInput
            onBlur={ () => this.onBlur() }
            onChangeText={ (text) => this.onChange(text) }
            style={{ height: 70, backgroundColor: "#ededed", borderWidth: 1, borderColor: this.state.inputBorder }} />
        </View>
        <View style={{marginTop:30}}>
            <TextInput 
          style={{ height: 70, backgroundColor: "#ededed" }} />
        </View>
      </View>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1,  
  }
});

AppRegistry.registerComponent('SampleApp', () => SampleApp);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作一个反应本机输入,向用户提供验证状态反馈。 [有效、Printine、错误、编辑] 的相关文章

  • Android Studio 3.2.1 升级后构建错误

    我正在从 Udacity 构建一个示例项目 到目前为止 一切正常 但升级到 Android Studio 3 2 1 后 我遇到了下面的构建错误 摇篮版本 4 6 项目链接 https github com udacity ud851 Su
  • 使用 WiFi 获取位置详细信息

    我正在 Android 中创建一个小应用程序 它指向当前位置 我已经使用了 GPS 提供商 但发现在某些地方我无法使用 GPS 提供商获取数据 任何人都可以帮我得到这个吗 如果您已连接到 WIFI 则只需使用网络提供商即可更新您的位置 他们
  • 移动 Safari 中的文件上传和 EXIF

    正如这些问题中所指出的 在某些情况下 iOS 上上传的照片的地理位置和其他 EXIF 元数据会被删除 在 safari 中 https apple stackexchange com questions 326789 gps exif fr
  • 如何使用 Code Push CLI 更新“生产”部署?

    我一直在向我的团队展示我的进步Staging钥匙 当我做code push deployment ls APP NAME HERE k 它会给我一个Staging and Production表与Production有消息No update
  • 如何获取与 TextView 关联的字符串资源的 id?

    我可以访问 TextView 实例 获取它的资源 ID 并通过以下方式获取它的资源名称getResources getResourceEntryName 但我似乎找不到一种方法来获取与其关联的字符串的 id 如何动态获取与 TextView
  • Android - 如何使用操作创建通知[重复]

    这个问题在这里已经有答案了 我正在创建这样的通知 Notification Builder builder new Notification Builder context builder setContentTitle notifyMes
  • 如何更改 UISwitch 关闭状态的默认颜色?

    我想更改 UISwitch 中 onTintColor 的颜色以表示关闭状态 切换位于表格视图中 并且以编程方式进行切换 settingsSwitch setBackgroundColor UIColor whiteColor settin
  • opengl 覆盖在相机视图上

    我仍然没有找到在相机预览顶部显示 opengl 叠加层的正确方法 有一个 hack 你可以调用 setContentView GLSurfaceView addContentView MyCameraSurfaceView 但它无法正常工作
  • 如何构建 APK 和应用程序动态加载的单独库

    简短的总结是 如何构建 APK 和单独的库 我指的是某种形式的类集 理想情况下也是资源 例如 JAR AAR 或 DEX 文件 但不将这些库包含在应用程序 相反 应用程序在运行时加载它们 Detail 所以我的主要问题是如何构建这样的应用程
  • Android ViewPager - 在左侧和右侧显示页面预览

    我用的是安卓系统ViewPager 我想要做的是在左侧和右侧显示页面的预览 我已经知道在哪里可以使用否定pageMargin显示右侧的预览 setPageMargin 100 无论如何 我也可以显示左侧的预览吗 它基本上类似于我正在寻找的画
  • 如何在静音模式下启用媒体声音

    即使在静音模式下如何启动声音 我的音频文件位于我的原始文件夹中 我已经编写了一些代码 但是当我进入 Android 的声音设置时 铃声和闹钟是唯一更改为最大值的设置 但媒体部分没有更改 这是我的代码 public void playSoun
  • 为 Android 编译时显示 FFMPEG 错误

    我正在尝试将 ffmpeg 添加到我的 android 项目中 我使用的是 ubuntu 14 04 操作系统 我正在关注此链接 Link https software intel com en us android blogs 2013
  • ios 8 核心数据崩溃

    保存时 CoreData 发生崩溃 2014 09 16 09 51 58 273 My app 2678 105246 Terminating app due to uncaught exception NSInvalidArgument
  • cordova-plugin-whitelist 适用于 Android,但不适用于 iOS (Phonegap Build)

    我正在开发一个用 Cordova 封装并使用 Phonegap Build 构建的 JavaScript 应用程序 我们包括cordova plugin whitelist来自我们构建中的 npm 并添加了
  • 如何在 EditText 中用逗号分隔数字

    我有一个 EditText 其 inputType 为number 当用户打字时 我想用逗号分隔数字 这是一个小例子 123 将表示为 123 1234 将表示为 1 234 12345 将表示为 12 345 等等 我尝试使用 TextW
  • 如何使用支持FileProvider将内容分享给其他应用程序?

    我正在寻找一种使用 Android 支持库与外部应用程序正确共享 而不是打开 内部文件的方法文件提供者 http developer android com reference android support v4 content File
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR
  • Android API 8、10 ContactsContract.Data.HAS_PHONE_NUMBER 没有这样的列

    以下查询在我的设备上运行良好 API 15 它在我运行 API 8 或 API 10 的模拟器中不起作用 这是查询 Cursor contactsCur getContentResolver query ContactsContract D
  • 为什么在 this 方法中添加 If 语句会大大降低速度?

    我在中遇到过这个回答另一个问题 https stackoverflow com questions 12233594 faster way to apply alpha to a jpeg in an android app 我试图诊断哪些
  • Google Analytics 数据中出现未知的应用版本

    我有一个Android应用程序发布到Google Play商店 它的apk文件也被我不认识的人发布到一些中国商店 今天我注意到Google Analytics数据中一个非常奇怪的情况 我从未发布过1 6 3版本 但我注意到它在那里 有37个

随机推荐

  • 从应用程序范围的用户 ID 获取 Facebook 用户 ID

    从 Facebook Graph API v1 0 升级到 v2 0 后 Facebook 使用 应用程序范围的用户 ID 因此我无法再在应用程序中看到 原始 用户 ID 我总是使用实时更新和图形 API 调用 例如 https graph
  • 无论我尝试什么,CFBundleDisplayName 的本地化都不起作用

    有人可以告诉我如何找到问题吗 我有一个名为 MyApp 的应用程序 我想将应用程序名称本地化为德语 我在主项目目录中有一个目录 de lproj 它包含一个文件 Localized strings 并且工作正常 我添加了一个 InfoPli
  • 如何在图像上方添加渐变边框(对角线边框)[重复]

    这个问题在这里已经有答案了 我需要这样的东西 但在图像上方 这是我的第一次尝试 但它不起作用 http jsfiddle net wo8gbhx3 17 http jsfiddle net wo8gbhx3 17 这是我的标记 现在 HTM
  • Rails 3 使用 Ajax 计算行总数

    我有一个发票应用程序 发票有行项目 提交发票后 即可正确计算行总计和总计 但我还想在提交发票之前计算行总计和总计 例如 如果您更改数量 则行总计和总计应更改 我目前正在研究不同的 jQuery 插件 也许你过去也做过类似的事情 你会推荐什么
  • 如何防止角材料垫菜单关闭?

    我正在角度材料中创建一个日期时间选择器控件 并使用以下代码来执行此操作
  • 如何自定义FBLoginVIew?

    为了在我的 ios 应用程序中连接到 facebook 我正在使用 FBLoginVIew适用于 iOS 的 Facebook SDK http developers facebook com docs sdk reference ioss
  • 在ggplot2facet_grid中旋转切换的facet标签

    我想使用facet grid 在彼此之上绘制一些条形图 library ggplot2 df lt group by mpg manufacturer gt summarise cty mean cty hwy mean hwy gt un
  • 我希望 shell 脚本可执行但不可读

    我创建了一个脚本 我希望其他用户使用我们的共享系统 to 执行但不读取 我将权限设置为所有可执行文件 但撤销了读 写权限 x x x 1 dilletante staff 0 2013 04 02 11 42 expect sh 然而脚本无
  • 使用 lambda 表达式参数调用泛型方法的反射

    我正在寻找一种使用 lambda 表达式调用通用方法的方法 该表达式在项目数组中调用 Contains 在本例中 我使用实体框架Where方法 但该场景可以应用于其他IEnumerables 我需要通过 Reflection 调用上面代码的
  • 如何检查 SQL Server 当前池大小

    有没有办法检查 SQL Server 中当前连接池的大小 我不是在谈论最大连接池大小 而是当前池大小 假设最大池大小为 100 并且有 49 个打开的连接 它现在应该显示 51 个可用连接或 49 个已消耗连接 那么 有这样的查询吗 其中很
  • Golang写入套接字而不用担心数据不完整

    我们都知道 Write 方法不能保证从缓冲区中写入高字节 因此 使用原始 Write 方法将字节写入套接字的规范方法如下所示 how many bytes we have written written 0 for written lt l
  • 无法让 QWindow::fromWinId 正常工作

    我的 Qt 5 9 程序 在 X11 Linux 上 使用以下命令启动其他应用程序QProcess 我想控制这些应用程序生成的窗口 所以我获得了它们winId价值和用途QWindow fromWinId得到一个QWindow实例 问题是这些
  • Laravel $request->expectsJson()

    我正在为我的 Laravel 应用程序进行 Ajax 登录 我正在使用角度 http method POST url admin login headers Content Type application json data email
  • 如何读取图像上的文字?

    我需要将一些扫描文档解析为文本数据 是否可以使用某些软件解析图像上写的文本 如果是 请推荐任何此类在线实用程序或软件 也许一些 OCR 软件会有帮助 http en wikipedia org wiki Optical character
  • 忽略“证书未知”警报

    我有以下简单的 Python 脚本 import socket import ssl if name main s socket socket socket AF INET socket SOCK STREAM s bind 443 s l
  • 销毁 Bootstrap 弹出窗口时出现 Javascript 错误

    尝试随时更改引导程序弹出窗口的标题和内容 我遇到了一些麻烦 我在销毁选择器中的弹出窗口内容时遇到此问题 错误是这样的 TypeError undefined is not a function evaluating data option
  • T-SQL删除插入的记录

    我知道标题可能看起来很奇怪 但这就是我想做的 我有很多记录的表 我想获取其中一些记录并将它们插入到其他表中 像这样的东西 INSERT INTO TableNew SELECT FROM TableOld WHERE 棘手的部分是我希望我插
  • Jquery UI 工具提示不支持 html 内容

    今天 我将所有 jQuery 插件升级为 jQuery 1 9 1 我开始将 jQueryUI 工具提示与 jquery ui 1 10 2 一起使用 一切都很好 但是当我在内容中使用 HTML 标签时 在title我正在应用工具提示的元素
  • 我怎样才能使这个模式持久化?

    我正在寻找一种方法 让这种模式在出现后持久存在 正如此处所示 用户只需在 div 外部单击一下即可将其关闭
  • 如何制作一个反应本机输入,向用户提供验证状态反馈。 [有效、Printine、错误、编辑]

    我希望输入能够随着用户键入而不断更新 然后失去焦点 反馈将是输入周围的边框 1 Green when valid 2 Amber when typing and is in error state Green when valid 3 Re