combobox 必填与非必填转换

本文介绍在使用EasyUI框架时,如何针对Combobox组件实现条件性的必填验证。通过自定义JavaScript函数判断是否需要对特定Combobox进行校验,并展示了具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

easy-ui 中combobox是一个很常用的组件,那么他有一个不有好的现象,比如页面有一个栏位是否必填,如果选择是另一个栏位比如内容栏位它是一个combobox如下:

<tr>
        <td class="td_r bg2">是否列入计划:</td>
     <td class="td_wid">
      <input class="input plui-validatebox"  name="add_plan" id="add_plan" data-options="validType:'maxLength[4]',charLenForCH:2,tipPosition : 'left'" />      
     </td>     
      <td class="td_r bg2"><span id="njgyspan" style="display: none;color:red;">*</span>工程进展/是否拆除:</td>
       <td class="td_wid">
      <input class="input"  name="jgysjd" id="jgysjd" data-options="validType:'maxLength[30]',charLenForCH:2,tipPosition : 'left'" />
      <span id="jgyssj_span"><input class="input plui-validatebox" name="jgyssj" id="jgyssj" style="width:23%"/></span>
      
       </td>          
    </tr>

在进行保存动作时我们需要对是否列入计划做判断,如果选择是则工程进展需要必填校验,如果否则不进行校验,开始使用combobox属性required,但是有一个bug在我们设置false时组件会初始化,把之前数据清理掉,于是换了一种思路:

function isRequired(){
  var flag = true;
  var addPlan = $("#add_plan").combobox('getValue');
  var jgysjd =$("#jgysjd").combobox('getValue');
  var nd=$("#nd").calendarbox('getValue');
  var nd_district=$("#nd_district").calendarbox('getValue');
  var nd_other=$("#nd_other").calendarbox('getValue');
  if("是" == addPlan){
   if(jgysjd == "" || jgysjd == null || jgysjd == undefined){
    $.messager.alert('温馨提示','治理工程进展/是否拆除不能为空!','info');
    flag = false;
   }
   if(flag){
    if((nd == "" || nd == null || nd == undefined) || (nd_district == "" || nd_district == null || nd_district == undefined) || (nd_other == "" || nd_other == null || nd_other == undefined)){
     $.messager.alert('温馨提示','纳入年度防治方案不能为空!','info');
     flag = false;
    }
   }
  }
  return flag;
 }

保存之前调用此方法判断,效果一样,如果各位大神有什么好的处理方式,请留言!谢谢


同理,解决BookUpdateController类的这个问题, package opera; import dao.BookManager; import entity.Book; import javafx.fxml.FXML; import javafx.scene.control.DatePicker; import javafx.scene.control.TextField; import javafx.scene.control.ComboBox; import java.time.LocalDate; import java.time.ZoneId; import java.util.Date; public class BookUpdateController extends Controller { @FXML private TextField isbnField; @FXML private TextField titleField; @FXML private TextField authorField; @FXML private TextField publisherField; @FXML private TextField categoryField; @FXML private TextField stockField; // 修改字段名: totalCopiesField → stockField @FXML private TextField priceField; // 添加价格字段 @FXML private DatePicker publishDatePicker; // 添加出版日期字段 @FXML private ComboBox<String> statusCombo; // 添加状态字段 private Book currentBook; private final BookManager bookManager = new BookManager(); // 创建BookManager实例 public void setBook(Book book) { this.currentBook = book; populateFields(); } private void populateFields() { if (currentBook != null) { isbnField.setText(currentBook.getIsbn()); titleField.setText(currentBook.getTitle()); authorField.setText(currentBook.getAuthor()); publisherField.setText(currentBook.getPublisher()); categoryField.setText(currentBook.getCategory()); stockField.setText(String.valueOf(currentBook.getStock())); // 使用stock字段 // 设置新添加的字段 priceField.setText(String.valueOf(currentBook.getPrice())); // 转换Date为LocalDate if (currentBook.getPublishDate() != null) { publishDatePicker.setValue( currentBook.getPublishDate().toInstant() .atZone(ZoneId.systemDefault()) .toLocalDate() ); } // 初始化状态下拉框 statusCombo.getItems().addAll("可用", "借出", "维护中", "已下架"); statusCombo.setValue(currentBook.getStatus()); // ISBN不可编辑 isbnField.setDisable(true); } } @FXML private void handleUpdateBook() { try { // 创建更新后的图书对象 Book updatedBook = new Book(); // 保留原始ID updatedBook.setBookId(currentBook.getBookId()); // 设置界面字段 updatedBook.setIsbn(isbnField.getText()); updatedBook.setTitle(titleField.getText()); updatedBook.setAuthor(authorField.getText()); updatedBook.setPublisher(publisherField.getText()); updatedBook.setCategory(categoryField.getText()); updatedBook.setStock(Integer.parseInt(stockField.getText())); // 使用stock // 设置新添加的字段 updatedBook.setPrice(Double.parseDouble(priceField.getText())); // 转换LocalDate为Date if (publishDatePicker.getValue() != null) { updatedBook.setPublishDate( Date.from(publishDatePicker.getValue().atStartOfDay() .atZone(ZoneId.systemDefault()) .toInstant() ) ); } updatedBook.setStatus(statusCombo.getValue()); // 调用BookManager更新 if (bookManager.updateBook(updatedBook)) { showInfoAlert("图书更新成功"); // 更新当前图书对象 currentBook = updatedBook; } else { showErrorAlert("图书更新失败"); } } catch (NumberFormatException e) { showErrorAlert("库存和价格必须是数字"); } catch (Exception e) { showErrorAlert("系统错误:" + e.getMessage()); e.printStackTrace(); } } }
最新发布
06-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值