当前位置: 首页 > 知识库问答 >
问题:

提交文本输入时更改颜色按钮

高峻
2023-03-14

当文本输入为空时,我需要将按钮设置为灰色,一旦所有字段都已填写,请将其更改为蓝色。

login.tsx

从'React'导入React,{useState};从'react native'导入{View、Text、TextInput、TouchableOpacity};从'../../../infrastructure/components/buttons/button-outline primary/index'导入ButtonOutline;从'../../../infrastructure/components/buttons/button primary/index'导入ButtonPrimary;从“导入样式”/样式';从'react hook form'导入{useForm,Controller};

导出默认函数LogInComponent () {

const { register, setValue, handleSubmit, control, reset, formState: { errors } } = useForm();
const onSubmit = data => {
    console.log(data);
};



return (
        <View style={styles.container}>
            <View style={styles.boxTitle}>
                <Text>YPF - GAS</Text>
            </View>
            <View style={styles.boxForm}>
                <View style={styles.boxInput1}>
                    <Text style={styles.text}>Patente</Text>
                    <Controller
                    control={control}
                    render={({field: { onChange, onBlur, value }}) => (
                    <TextInput
                        style={styles.FormInput}
                        onBlur={onBlur}
                        onChangeText={value => onChange(value)}
                        value={value}
                    />
                    )}
                    name="patente"
                    rules={{required: true}}
                />
                </View>
                <View style={styles.boxInput}>
                    <Text style={styles.text}>Planta  </Text>
                    <Controller
                    control={control}
                    render={({field: { onChange, onBlur, value }}) => (
                    <TextInput 
                    style={styles.FormInput}
                    onBlur={onBlur}
                    onChangeText={value => onChange(value)}
                    value={value} 
                    />
                    )}
                    name="planta"
                    rules={{required: true}}
                />
                </View>
                <View style={styles.boxInput}>
                    <Text style={styles.text}>Usuario</Text>
                    <Controller
                    control={control}
                    render={({field: { onChange, onBlur, value }}) => (
                    <TextInput 
                    style={styles.UserFormInput}
                    onBlur={onBlur}
                    onChangeText={value => onChange(value)}
                    value={value}
                    />
                    )}
                    name="usuario"
                    rules={{required: true}}
                />
                </View>
                <View style={styles.boxButton}>
                    <ButtonOutline style={styles.button} title= 'Cerrar'></ButtonOutline>
                        <ButtonPrimary onPress={handleSubmit(onSubmit)} style={styles.button}  title= 'Ingresar'></ButtonPrimary>
                </View>
            </View>
        </View>
);

}

样式.tsx

从'react native'导入{StyleSheet};从'../../../application/common/Colors'导入颜色;

导出默认样式表.create({ 容器: { flex: 1, 背景颜色: 颜色表面 }, 框标题: { flex: 1, 填充: 5, 对齐项: “弹性开始”, 对齐内容: “中心”, 背景颜色: 颜色背景 }, 框格式: { flex: 9, 填充: 5 }, 框输入: { flex: 0, 对齐项: “居中”, 对齐内容: “居中”, 屈曲方向: “行”, 边距顶部: 30 }, 框输入1: { flex: 0, 对齐项: “中心”, 对齐内容: “中心”, 柔性指向: “行”, 边距顶部: 70 }, 表单输入: { 填充: 0, 行高: 24,字体大小: 20, 宽度: 168, 高度: 40, 背景颜色: 颜色背景, 边框半径: 4, 边框宽度: 2, 边框颜色: '#AAAAAA', }, 用户窗体输入: { 填充: 0, 字体大小: 20, 行高: 24, 宽度: 168, 高度: 40, 背景颜色: 颜色表面, 边框半径: 4, 边框宽度: 2, 边框颜色: '#AAAAAA', }, 文本: { 右: 60, 字体大小: 20, 行高: 24 }, 框按钮: { 顶部: 53, 柔性: 1, 柔行方向: '行', justify内容: '周围空间' }, 按钮: { 宽度: 216, 高度: 40, 字体大小: 18, 行高: 22 },

});

共有1个答案

刘奇
2023-03-14

使用TouchableOpacity作为组件中的按钮

import React, {useState, useEffect} from 'react';
import {
  Text,
  View,
  StyleSheet,
  TextInput,
  TouchableOpacity,
} from 'react-native';

const ButtonColor = () => {
  const [firstName, setFirstName] = useState('');
  const [lastName, setLastName] = useState('');
  const [btnColor, setBtnColor] = useState(false);

  useEffect(() => {
    if (firstName !== '' && lastName !== '') {
      setBtnColor(true);
    } else {
      setBtnColor(false);
    }
  }, [lastName]);

  return (
    <View style={styles.container}>
      <View style={styles.secondContainer}>
        <View style={styles.formContainer}>
          <View style={styles.labelContainer}>
            <Text style={{color: '#000'}}>First Name</Text>
          </View>
          <View style={styles.textContainer}>
            <TextInput
              defaultValue={firstName}
              placeholder={'Type First Name'}
              onChangeText={val => setFirstName(val)}
            />
          </View>
        </View>
        <View style={styles.formContainer}>
          <View style={styles.labelContainer}>
            <Text style={{color: '#000'}}>Last Name</Text>
          </View>
          <View style={styles.textContainer}>
            <TextInput
              defaultValue={lastName}
              placeholder={'Type Last Name'}
              onChangeText={val => setLastName(val)}
            />
          </View>
        </View>
        <View style={styles.formContainer}>
          <TouchableOpacity
            style={
              btnColor
                ? styles.filledContainerButton
                : styles.normalContainerButton
            }>
            <Text style={styles.btnTextColor}>Button</Text>
          </TouchableOpacity>
        </View>
      </View>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  secondContainer: {
    width: '85%',
    height: 300,
    marginTop: '40%',
    paddingHorizontal: 20,
    paddingVertical: 20,
    // alignItems: 'center',
    alignSelf: 'center',
    borderRadius: 5,
    borderWidth: 2,
    borderColor: 'black',
  },
  formContainer: {
    marginBottom: 20,
  },
  labelContainer: {
    marginBottom: 5,
  },
  textContainer: {
    borderWidth: 1,
    borderColor: '#d3d3d3',
    borderRadius: 3,
    height: 40,
  },
  normalContainerButton: {
    backgroundColor: '#808080',
    height: 40,
    width: '80%',
    alignSelf: 'center',
    // alignContent: 'center',
    alignItems: 'center',
    justifyContent: 'center',
    borderRadius: 9,
  },
  filledContainerButton: {
    backgroundColor: 'blue',
    height: 40,
    width: '80%',
    alignSelf: 'center',
    // alignContent: 'center',
    alignItems: 'center',
    justifyContent: 'center',
    borderRadius: 9,
  },
  btnTextColor: {
    color: '#fff',
  },
});

export default ButtonColor;
 类似资料:
  • 嗨,我在我的应用程序中使用TextInputLayout。我想将提示文本颜色和浮动标签颜色(聚焦和不聚焦)设置为白色。我已经尝试了下面的代码。 它适用于Lollipop,但不适用于较低的versions.How我可以在较低的版本中实现相同的功能吗?

  • 我正在使用新的谷歌设计库(com . Android . support:design:22 . 2 . 0 ),我在使用Android . support . design . widget . textinputlayout时遇到了问题。 如果我以编程方式设置它的EditText,浮动提示颜色是灰色而不是强调色。如果用户自己填充字段(EditText)或者如果他改变字段的预定义值,它就工作。

  • 我创建了一个暗/亮主题切换器,我发现的问题是当我在输入域输入任何信息时,当网站在暗模式下时,输入域内的文本显示为黑色,我如何改变它,在亮模式下保持黑色文本颜色,在暗模式下保持白色文本颜色。 这是我的CSS为光明/黑暗模式。如何为黑暗模式添加不同的文本颜色? 我试图用这段代码,但它在黑暗和光明模式下都发生了变化。 编辑:我从下面的回答中添加内容。它现在工作只有一个问题,当我改变到光模式时,输入文本颜

  • 当我的按钮被按下时,我如何用xml更改文本和背景颜色? 要更改文本颜色,可以执行以下操作: 要更改背景,我可以做(在具有可绘制引用的选择器/项中使用它): 但我怎么能两样都做呢?假设我想要: 默认:黑色文本/白色背景 按下:白文/蓝底 我完全忘记了背景和文本颜色是分开管理的,所以我是这样做的: 在MyBackgroundColors.xml中,我管理背景,在FiltersButtonColors.

  • 我一直试图改变我的时间选择器的文本颜色。但是我找不到父样式的位置。我两个都试过了 和 我的是15。我的是20。我已经重建并清理了我的项目 我想我已经解决了所有类似的问题,但没有一个真正为我提供了解决方案。唯一可行的答案是使用某种库,但我不太喜欢这种解决方案。到父级的路径是否与我正在使用的路径有所不同,因为我非常确定我应该能够以某种方式访问它? 编辑 这是主题的应用方式; 请注意,这是我收到的错误(

  • 我是JavaFX新手。目前,我正在尝试在用户键入时更改文本字段中文本的颜色。我并不是想在其他地方改变文本的颜色,而是在textfield本身。 我到处搜索,每个人都在谈论如何使用文本对象或文本流改变另一个文本字段的颜色。但我试图改变颜色的一个特定的字时,用户正在打字。 例如,如果用户键入“go to school by 2pm”,我希望将单词“by”的颜色更改为绿色(当用户键入时在文本字段中)。