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

如何调整Django表单逻辑,使quote-text字段在页面加载时隐藏?

解决Django表单初始显示与字段切换问题

你的问题核心是页面加载时quote-form默认显示,而只有当输入的entity-name不存在于数据库时才该显示它。目前仅在输入触发keyup时逻辑正常,初始状态没处理到位,调整方案如下:

1. 给quote-form添加初始隐藏样式

页面加载时直接让表单隐藏,从根源控制初始状态:

<form id="quote-form" style="display: none;">
  <label for="quote-text">Quote Text:</label>
  <textarea class="form-control" id="quote-text" name="quote-text" rows="3"></textarea>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

2. 完善searchEntities函数逻辑

补充处理输入框为空的场景(比如用户清空输入时,也应隐藏表单),同时优化内容渲染的安全性:

function searchEntities() {
  const entityName = document.querySelector('#entity-name').value.trim();
  const quoteForm = document.querySelector('#quote-form');
  const searchResults = document.querySelector('#search_results');
  
  searchResults.innerHTML = '';

  // 输入为空时直接隐藏表单
  if (!entityName) {
    quoteForm.style.display = 'none';
    return;
  }

  fetch(`/search-entities/?entity_name=${entityName}`)
    .then(response => response.json())
    .then(entities => {
      if (entities.length === 0) {
        // 无匹配实体,显示表单
        quoteForm.style.display = 'block';
      } else {
        // 有匹配实体,渲染结果并隐藏表单
        entities.forEach(entity => {
          const p = document.createElement('p');
          p.textContent = entity.name; // 用textContent避免XSS风险
          searchResults.appendChild(p);
        });
        quoteForm.style.display = 'none';
      }
    });
}

3. 可选:页面加载时主动触发检查

如果需要确保初始状态绝对可靠,可在页面加载完成后调用一次函数:

// 在script代码末尾添加
document.addEventListener('DOMContentLoaded', searchEntities);

调整后效果:

  • 页面加载时quote-form默认隐藏
  • 输入为空时保持表单隐藏
  • 输入内容无匹配实体时显示表单
  • 输入内容有匹配实体时隐藏表单并展示搜索结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:21:03