亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

HTML <選擇>即使未選擇,元素也會發送默認選擇

HTML <選擇>即使未選擇,元素也會發送默認選擇

翻過高山走不出你 2023-12-19 16:51:40
我通過 EJS 生成了一個下拉列表,它將默認selected 值設置為該公司當前的管理員值。用戶應該能夠取消選擇當前管理員并選擇其他管理員,從而將當前管理員刪除為公司管理員。但是,選擇另一個選項和/或按住 CTRL 鍵并單擊默認選項不會取消選擇它,并且表單會發送默認選項和任何其他可能選擇的選項。我是否錯過了 selected 屬性的工作方式中的某些內容?option<div id="adminDropdown">  <% if (companyAdmins) { %>    <select name="chooseAdmins" id="chooseAdmins" form="updateCompany" multiple class="form-control">      <% for (let location of currentCompany.locations ) { %>        <% for (let contact of location.contacts) { %>           <option value="<%= contact.id %>" <%= contact.isCompanyAdmin ? 'selected' : '' %>><%= contact.firstName %> <%= contact.lastName %></option>        <% } %>      <% } %>    </select>    <span class="muted"><small>Hold `CTRL` to select multiple admins, or to deselect an admin.<br />      To add users to this list, first add them to their Location's "Contacts".    </small></span>  <% } else { %>    <div class="alert alert-warning">Error loading admins data</div>  <% } %></div>另外,檢查 chrome 中的元素,“選定的”元素;屬性在加載時正確顯示,但在單擊或 ctrl+單擊選項后不會消失,就像它應該的那樣。
查看完整描述

2 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

我看到的問題是你沒有關閉 select 內的第一個 for 循環


<% for (let location of currentCompany.locations ) { %>

    <% for (let contact of location.contacts) { %> 

        <option value="<%= contact.id %>" <%= contact.isCompanyAdmin ? 'selected' : '' %>><%= `${contact.firstName} ${contact.lastName}` %></option>

    <% } %>

<% } %>

順便說一句,我認為在 ejs 中使用字符串文字只會降低代碼的可讀性。

你可以保持簡單<%= contact.firstName %> <%= contact.lastName %>


查看完整回答
反對 回復 2023-12-19
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

我想到了:

問題是由于將 chooseAdmins 下拉列表中顯示的代碼復制到其下方的另一個類似下拉列表中而引起的,用戶可以在其中選擇新的默認位置,但我沒有更新該位置name 或 id 屬性與新下拉列表的內容相關。所以實際上并沒有出現錯誤,body-parser 看到兩個具有相同名稱的 select 元素,因此它只是將兩個元素的選定值合并到一個數組中.

我學得越多,就越明白我理解的東西是多么的少。


查看完整回答
反對 回復 2023-12-19
  • 2 回答
  • 0 關注
  • 172 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號