我应该如何捕获一堆下拉列表(在表格中)并存储它?

时间:2016-01-05 23:47:19

标签: javascript jquery

我有一个填充了静态数据的表,一列包含在forEach(数组中的项目)期间为每一行构建的下拉列表。虽然它们具有相同的内容,但它们需要单独处理。用户将更改下拉列表,并且需要存储他们的选择。

我见过jquery .change方法,根据文档可以像

一样
$(document).ready(function(){
    $( "input[type='select']" ).change(function() {
        console.log (input( $( this ).val() )
    });
});

当任何下拉列表发生变化时触发。但上面没有记录,也没有错误。

如何监控所有这些下拉列表以进行更改并存储更改?

OR

根据select设置脚本以监控其指定的元素,我会更好吗?我现在或可能不关心性能或文件大小。我已经使用forEach填充行和selected下拉列表的右option

2 个答案:

答案 0 :(得分:2)

问题是您使用的是select不是 input[type="select"]。那是不正确的。

<table id="yourTableID">
    <tr>
      <td>
          <select>
             <option value="blahXX">Some Text</option>
             ....
             ....
          </select>
       </td>
    </tr>
</table>

input[type="XXX"]将是:

  • 输入
  • 密码
  • 电子邮件

您需要的是jQuery的on事件,如下所述。 b / w没有on事件和使用change事件的区别在于您声明选择是“克隆”的,这意味着change事件将不会被设置这些新的克隆选择。

此外,无论您使用的是on还是其他活动(例如changeclick等),使用以下代码始终是一个好习惯。这样做是说:“查看此元素(通常是ID),当事件发生时,将其应用于函数中的元素”。而不是说(不使用这种方式),“取所有这些XXX元素,并为每个元素添加一个事件监听器。为什么有XXXX事件监听器只需要一个!

$(function() {   <-- this is the same as using (document).ready
    $('#yourTableID').on('change','select', function(e) {
         // your stuff here
    });
});

基本上你只创建了一个事件监听器,而不是XX。这只会将监听器添加到带有XX ID的表中,并说“使用XX ID在此元素中观察selects,如果发生change事件,则触发事件”。

http://api.jquery.com/on/

  

.on()方法将事件处理程序附加到jQuery对象中当前选定的元素集。从jQuery 1.7开始,.on()方法提供了附加事件处理程序所需的所有功能。有关从旧的jQuery事件方法转换的帮助,请参阅.bind(),. delegate()和.live()。要删除与.on()绑定的事件,请参阅.off()。要附加仅运行一次然后自行删除的事件,请参阅.one()

答案 1 :(得分:0)

它不是$("input[type='select']"),只是$("select")select是非输入类型的标记。