You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

能否通过下拉列表与JavaScript控制EasyUI-Dialog的标签/文本框可见性?

如何用下拉列表和JavaScript控制EasyUI-Dialog中标签与文本框的可见性?

当然可以啦!你完全可以通过下拉列表结合JavaScript来动态控制EasyUI Dialog里标签和文本框的可见性,我给你整理了具体的实现方案,完美适配你现有的代码逻辑:

1. 调整Dialog的表单结构

首先在你的Dialog表单里添加下拉列表,以及不同类型对应的专属表单字段(初始状态可以隐藏非默认字段):

<div id="dlg" class="easyui-dialog" style="width:400px;height:300px;" closed="true" buttons="#dlg-buttons">
  <form id="fm" method="post">
    <!-- 新增事件类型下拉列表 -->
    <div class="fitem">
      <label>Type d'événement:</label>
      <select id="eventType" class="easyui-combobox" data-options="valueField:'value',textField:'text',onChange:handleEventTypeChange">
        <option value="reunion">Réunion</option>
        <option value="tache">Tâche</option>
        <option value="rappel">Rappel</option>
      </select>
    </div>

    <!-- 会议专属字段(初始显示) -->
    <div id="reunionFields" class="fitem">
      <label>Salle de réunion:</label>
      <input class="easyui-textbox" name="salleReunion" required="true">
    </div>

    <!-- 任务专属字段(初始隐藏) -->
    <div id="tacheFields" class="fitem" style="display:none;">
      <label>Responsable:</label>
      <input class="easyui-textbox" name="responsable" required="true">
    </div>

    <!-- 提醒专属字段(初始隐藏) -->
    <div id="rappelFields" class="fitem" style="display:none;">
      <label>Heure de rappel:</label>
      <input class="easyui-datetimebox" name="heureRappel" required="true">
    </div>

    <!-- 通用字段 -->
    <div class="fitem">
      <label>Titre:</label>
      <input class="easyui-textbox" name="titre" required="true">
    </div>
  </form>
</div>

2. 编写JavaScript控制逻辑

添加下拉列表的切换事件处理函数,同时修改你原有的newEventeditEvent函数,确保新增逻辑能正常工作:

var url; 

// 下拉列表切换时的处理函数
function handleEventTypeChange(newValue) {
  // 先隐藏所有类型专属字段
  $('#reunionFields, #tacheFields, #rappelFields').hide();
  
  // 根据选中的事件类型显示对应字段
  switch(newValue) {
    case 'reunion':
      $('#reunionFields').show();
      break;
    case 'tache':
      $('#tacheFields').show();
      break;
    case 'rappel':
      $('#rappelFields').show();
      break;
  }
  
  // 可选:重新验证表单,确保显示的字段符合验证规则
  $('#fm').form('validate');
}

function newEvent(){ 
  $('#dlg').dialog('open').dialog('setTitle','Nouvel Événement'); 
  $('#fm').form('clear'); 
  // 打开Dialog时默认选中第一个选项,触发字段显示
  $('#eventType').combobox('setValue', 'reunion');
  url = 'save_event.php'; 
} 

function editEvent(){ 
  var row = $('#dg').datagrid('getSelected'); 
  if (row){ 
    $('#dlg').dialog('open').dialog('setTitle','Modifier l\'événement'); 
    $('#fm').form('load',row); 
    // 编辑时根据选中行的事件类型,自动切换显示对应字段
    $('#eventType').combobox('setValue', row.eventType);
    url = 'edit_event.php'; // 补全你之前截断的编辑接口地址
  } 
}

3. 额外注意事项

  • 如果你想要更平滑的显示/隐藏效果,可以用jQuery的slideDown()/slideUp()或者fadeIn()/fadeOut()代替show()/hide()
  • 编辑模式下,确保你的行数据row包含eventType字段,这样才能正确匹配并显示对应表单元素
  • 可以根据需求给不同类型的字段添加或移除验证规则,确保表单提交的准确性

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

火山引擎 最新活动