【问题标题】:Preloading a multiple select list预加载多选列表
【发布时间】:2016-10-04 16:04:26
【问题描述】:

所以我在网页上有一个表单,它是一个多选选项输入,例如。

<option name="testData" multiple="multiple">
  <select value="1">Option 1</select>
  <select value="2">Option 2</select>
  <select value="3">Option 3</select>
  <select value="4">Option 4</select>
  <select value="5">Option 5</select>
 </option>

提交表单后,选定的选项将存储在一个数组中(例如 1、2、3)

问题是,如果我重新访问该页面,我希望将数据拆分回单独的值,并确保它们之前是否被选中,它们会再次被选中。

所以在这种情况下,值 1、2、3 已经在选择菜单中被选中。

信息存储在数据库中,并且可以正确提取。我要问的是如何取值(1、2、3 等)并将每个值标识为选项列表中的选定选项。然后用户可以根据需要进行修改。

如果可能的话,这可以用 jquery 来完成吗? Javascript 也可以。

如果这需要更多解释,请告诉我,我会尽力回答任何问题

提前致谢

【问题讨论】:

  • 它应该是&lt;select name="testData" multiple="multiple"&gt; &lt;option value="1"&gt;Option 1&lt;/option &gt;&lt;/select&gt;并使用.val()来设置像$('[name="testData"]').val([1,2,3])这样的值
  • 唯一的问题是该值可能并不总是1,2,3它可能每次都是不同的值,例如1,2,5甚至1,3,4,5但是它始终是在选项列表中找到的值
  • 你可以通过ajax调用来获取值数组
  • 没关系,你需要将选中的值作为数组传递
  • @Roy_Dorsthorst jsfiddle.net/rfrvwf3f/1

标签: javascript jquery html-select


【解决方案1】:

您可以做的是将所选选项的数组存储到会话存储中(如果您想避免 AJAX 调用,它将使您的脚本更快)

// When your user clicks on the submit button
$( "#id_of_your_submit_btn" ).click(function() {
  // store the selected options into the sessionStorage
  sessionStorage.setItem('my_array_of_selected_values', array_of_selected_options);
});

然后,当您的页面重新加载时,您可以检查是否设置了此 sessionStorage,然后动态选择先前选择的选项(如 Alexandru 建议的那样)

$( document ).ready(function() {
    console.log( "ready!" );
    var selected_options = sessionStorage.getItem('my_array_of_selected_values');
    if(selected_options) {
       // if something is set into this sessionStorage variable
       // we select the options dynamically
       $("[name='testData']").val(selected_options);
    }

});

NB:检查目标浏览器是否支持https://developer.mozilla.org/fr/docs/Web/API/Window/sessionStorage

【讨论】:

  • 谢谢,我认为这可行,只是为了检查“my_array_of_selected_values”中的内容?这只是选择列表的名称吗?例如。 'testData' 对不起,愚蠢的问题!
  • 不用担心,'my_array_of_selected_values' 是 sessionStorage 变量的名称。 testData是您的选项 HTML 标记的名称。变量array_of_selected_options 应该用你的数组设置[1,2,3] 希望这会有所帮助
【解决方案2】:

请试试这个,

$("[name='testData']").val([1,2,3]);

$("select").val([1,2,3]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多