form表单中输入框聚焦时清除错误提示

form表单引入

H5(antd-mobile:2.x版本)内引入 import createDOMForm from 'rc-form/lib/createDOMForm';

PC 通过引入 import { Form } from 'antd';

必填输入框校验行为

H5内和PC端,输入框必填校验行为:一般是失焦校验,聚焦时清除错误提示

设置失焦校验

根据文档,设置校验触发的时机即可,属性为:validateTrigger: 'onBlur',代码如下

    <Form onSubmit={this.handleSubmit} className="login-form">
      <Form.Item>
        {getFieldDecorator('userName', {
          // 设置校验时机为失焦校验
          validateTrigger: 'onBlur',
          rules: [{ required: true, message: 'Please input your username!' }],
        })(
          <Input
            prefix={<Icon type="user" style={{ fontSize: 13 }} />}
            placeholder="Username"
          />
        )}
      </Form.Item>
    </Form>

聚焦清除错误提示

查询该元素是否有错误提示,如果有,用setFieldsValue重置,即可清除错误状态,代码如下

   const FormComponent = (props) => {
    const handleFocusClick = () => {
      const { form } = props;
      // 检测是否有错误提示
      if (form.getFieldError('userName')) {
        const value = form.getFieldValue('userName');
        // 重置,清除错误提示(省略了errors:undefined)
        form.setFieldsValue({ userName: value });
      }
    };

    return (
      <Form onSubmit={this.handleSubmit} className="login-form">
        <Form.Item>
          {getFieldDecorator('userName', {
            validateTrigger: 'onBlur',
            rules: [{ required: true, message: 'Please input your username!' }],
          })(
            <Input
              prefix={<Icon type="user" style={{ fontSize: 13 }} />}
              placeholder="Username"
              onFocus={handleFocusClick}
            />
          )}
        </Form.Item>
      </Form>
    );
  };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过监听输入框的输入事件,然后根据输入框的值来选对应的单选框。以下是一个示例代码: HTML代码: ```html <form class="layui-form"> <div class="layui-form-item"> <label class="layui-form-label">输入框</label> <div class="layui-input-block"> <input type="text" name="input" lay-verify="required" placeholder="请输入内容" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">单选框</label> <div class="layui-input-block"> <input type="radio" name="radio" value="1" title="选项1"> <input type="radio" name="radio" value="2" title="选项2"> <input type="radio" name="radio" value="3" title="选项3"> </div> </div> </form> ``` JavaScript代码: ```javascript // 初始化form表单 layui.use('form', function(){ var form = layui.form; form.render(); // 监听输入框的输入事件 $('input[name="input"]').on('input', function(){ // 获取输入框的值 var val = $(this).val(); // 根据输入框的值选对应的单选框 if (val === '1') { $('input[name="radio"][value="1"]').prop('checked', true); } else if (val === '2') { $('input[name="radio"][value="2"]').prop('checked', true); } else if (val === '3') { $('input[name="radio"][value="3"]').prop('checked', true); } // 更新单选框的状态 form.render('radio'); }); }); ``` 上面的代码,我们监听了输入框的输入事件,然后根据输入框的值选对应的单选框,并更新单选框的状态。注意,要使用form.render('radio')来更新单选框的状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值