You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据AJAX返回值动态设置控件的RequiredField属性?

解决方案

你只需要在AJAX回调的成功函数里,在控制liGid可见性的同时,补充对应必填状态的设置逻辑就行。下面分两种常见场景给出调整后的代码:

场景1:使用UI框架自带的必填设置API

如果你的fytbTab0所属的UI框架提供了设置必填状态的方法(比如类似SetRequired()这类API),可以直接在显示liGid时调用它,隐藏时取消必填:

$.ajax({
    type: "POST",
    url: "TestPage.aspx/GetCode",
    data: '{"XKod":"' + s.GetValue().toString() + '"}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        const liGidItem = fytbTab0.GetItemByName('liGid');
        if (msg.d.GrupKodu == 3 || msg.d.GrupKodu == 5) {
            liGidItem.SetVisible(true);
            // 设置为必填字段,根据框架实际API调整方法名
            liGidItem.SetRequired(true);
        } else {
            liGidItem.SetVisible(false);
            // 取消必填状态
            liGidItem.SetRequired(false);
        }
    }
});

场景2:原生HTML表单元素处理

如果liGid是包含原生<input>/<select>等表单元素的容器,你可以直接定位到内部的表单控件,通过操作required属性来控制必填状态:

$.ajax({
    type: "POST",
    url: "TestPage.aspx/GetCode",
    data: '{"XKod":"' + s.GetValue().toString() + '"}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        const liGidItem = fytbTab0.GetItemByName('liGid');
        // 假设liGid内部的表单控件是input,选择器根据实际结构调整
        const formControl = liGidItem.GetElement().querySelector('input[name="GidInput"]');
        
        if (msg.d.GrupKodu == 3 || msg.d.GrupKodu == 5) {
            liGidItem.SetVisible(true);
            // 添加必填属性
            formControl.setAttribute('required', 'required');
            // 可选:添加输入提示
            formControl.setAttribute('title', '此字段为必填项');
        } else {
            liGidItem.SetVisible(false);
            // 移除必填属性
            formControl.removeAttribute('required');
        }
    }
});

额外提示

如果你的页面使用了第三方验证插件(比如jQuery Validation),记得在动态修改必填状态后,手动触发验证规则的更新,比如调用$.validator.unobtrusive.parse()来让插件识别新的必填设置,避免提交时出现验证遗漏。

内容的提问来源于stack exchange,提问作者F K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:14:45