用户在下拉菜单中选择“其他”时如何获取输入字段

时间:2019-04-07 01:29:00

标签: javascript reactjs jsx antd

我正在制作表格,希望用户在下拉菜单中选择“其他”时看到输入字段。

我对React还是很陌生,并试图从输入字段中获取值本身,但是它不起作用。

class Program
{
    static int[] occurence(string pattern)
    {
        int[] table = new int[char.MaxValue + 1];

        for (int a = 0; a < char.MaxValue + 1; a++)
        {
            table[a] = -1;
        }

        for (int i = 0; i < pattern.Length; i++)
        {
            char a = pattern[i];
            table[(int)a] = i;
        }
        return table;
    }

    public static int Sunday(string text, string pattern)
    {
        Stopwatch timer = new Stopwatch();
        timer.Start();
        int k = 0;
        int i = 0;
        int[] table = occurence(pattern);
        while (i <= text.Length - pattern.Length)
        {
            int j = 0;
            while (j < pattern.Length && text[i + j] == pattern[j])
            {
                j++;
            }
            if (j == pattern.Length)
            {
                k++;
            }
            i += pattern.Length;
            if (i < text.Length)
            {
                i -= table[(int)text[i]];
            }
        }
        timer.Stop();
        Console.WriteLine(timer.Elapsed);
        return k;
    }

    static void Main(string[] args)
    {
        string text = File.ReadAllText(@"C:\Users\Bacho\Desktop\Studies\Advanced Algorithms\Test Patterns\Book1.txt");
        string pattern = "frankenstein";
        Console.WriteLine(Sunday(text, pattern));
    }
}

这是一个简单的下拉列表,它将选择的值转换为数字,因此代码的输出将为<FormItem> <h4 className={ 'register_form_title'}><span className={ "red_astrick_sign"}>*</span>Entity type</h4> <Select placeholder="Type of entity" onChange={value=> setFieldValue('organisation_type', Number(value))} name="organisation_attributes.organisation_type"> <Option value="1">Public Limited Company</Option> <Option value="2">Private Limited Company</Option> <Option value="3">One Person Company</Option> <Option value="4">Limited Liability Partnership</Option> <Option value="5">Partnership Firm</Option> <Option value="6">Sole Proprietorship</Option> <Option value="0">Others</Option> </Select> </FormItem> 。但是,如果他们选择“其他”,则输入字段应确定{"organisation_type":<value>}

2 个答案:

答案 0 :(得分:1)

  1. 使用状态存储下拉列表的当前值和输入字段的可见性。
  2. onChange处理程序内部,仅当值不是O(对于其他)时才通过转换设置当前值,并将input-visibility设置为false。但是,当它为0时,请将input-visibility设置为true。
  3. 在输入字段的onChange内,设置当前值。

答案 1 :(得分:0)

使用状态变量来跟踪输入字段的可见性。

 constructor(props) {
        super(props);
        this.state = {show_input_field: false}
    }

在您的onChange属性中,检查值是否为0,将show_input_field的setState设置为true,否则为false,从而显示/隐藏输入字段。

使用相同的名称属性可以将值保存在所需的'organisation_attributes.organisation_type': <value>对中。

render() {
    const {show_input_field} = this.state;
    ...
    <Select placeholder="Type of entity" onChange={value => {
        setFieldValue('organisation_attributes.organisation_type', Number(value));
        if (value === 0)
            this.setState({show_input_field: true});
        else
            this.setState({show_input_field: false});
    }} name="organisation_attributes.organisation_type">
    </Select>

    {show_input_field ? <Input name="organisation_attributes.organisation_type" onChange={handleChange}/> : ""}
    ...
}

希望这会有所帮助。