DataTable更新时多必填字段校验的优化方案咨询
更简洁的必填字段校验实现方案
嘿,你的多分支判断确实有点冗余啦!其实每个字段都是独立的必填项,咱们完全不用写这么多嵌套的条件分支,只需要逐个检查每个字段是否为空,为空就标记必填状态就好,逻辑会清晰很多,代码也更简洁。
方案一:拆分独立判断(基础版)
先封装一个重复操作的小函数,避免重复写相同的属性设置代码,然后逐个检查每个字段:
// 封装标记必填的函数,减少重复代码 function markFieldAsRequired($element) { $element.attr('required', 'true'); $element.attr('aria-required', 'true'); } var r = confirm("Are you sure want to Update ?"); var index = $(this).attr('index'); // 提前获取对应的DOM元素,避免重复查询 var $tempField = $('#temp_' + index); var $comField = $('#com_' + index); var $nameField = $('#name_' + index); var tempValue = $tempField.val(); var comValue = $comField.val(); var nameValue = $nameField.val(); if (r === true) { // 逐个检查每个字段,为空就标记必填 if (!tempValue) markFieldAsRequired($tempField); if (!comValue) markFieldAsRequired($comField); if (!nameValue) markFieldAsRequired($nameField); // 如果需要所有字段都填写完整才执行更新逻辑,加个判断 if (tempValue && comValue && nameValue) { // 这里编写你的数据更新代码 } }
方案二:数组循环处理(扩展版)
如果以后可能需要增加更多必填字段,用数组循环的方式扩展性更好,只需要在数组里添加字段前缀即可:
var r = confirm("Are you sure want to Update ?"); var index = $(this).attr('index'); // 定义需要校验的字段前缀列表 var requiredFields = ['temp', 'com', 'name']; var allFieldsValid = true; if (r === true) { requiredFields.forEach(function(fieldPrefix) { var $field = $('#' + fieldPrefix + '_' + index); var fieldValue = $field.val(); if (!fieldValue) { $field.attr('required', 'true'); $field.attr('aria-required', 'true'); allFieldsValid = false; } }); // 所有字段都填写完整时执行更新 if (allFieldsValid) { // 执行数据更新操作 } }
为什么这样更优?
- 逻辑清晰:每个字段的校验独立,不用考虑各种组合情况,可读性更强
- 代码简洁:避免了大量重复的条件分支和DOM操作代码
- 扩展性好:方案二新增字段只需要修改数组,不用新增判断逻辑
内容的提问来源于stack exchange,提问作者Anitha s
相关产品推荐
相关产品推荐

