【问题标题】:Get changed value from <select> using jQuery使用 jQuery 从 <select> 获取更改的值
【发布时间】:2012-07-26 16:47:46
【问题描述】:

我正在尝试使用 jQuery 获取 &lt;select&gt; 输入的更改值。

更改前

<select class="input" multiple="multiple" name="inputUserRoles[]">
  <option value="Administrator">Administrator</option>
  <option value="Faculty" selected="selected">Faculty</option>
  <option value="Head of Department">Head of Department</option>
  <option value="Faculty Coordinator" selected="selected">Faculty Coordinator</option>
</select>

改动后

<select class="input" multiple="multiple" name="inputUserRoles[]">
  <option value="Administrator">Administrator</option>
  <option value="Faculty" selected="selected">Faculty</option>
  <option value="Head of Department">Head of Department</option>
  <option value="Faculty Coordinator">Faculty Coordinator</option>
</select>

如果您注意到,在更改事件之后,“教师协调员”选项不是 selected

我希望获得“教师协调员”的价值。

我的 javascript 代码

$('select[name="inputUserRoles[]"]').change(function(e) {
  // this line gives me the value after the change event.
  var inputUserRoles = $(this).val();
});

可能的解决方案?

我在想事件 (e) 应该包含更改的数据,但我不知道如何获取它。我正在进行的项目已进入最后阶段,我只需要弄清楚这部分即可完成类似的剩余模块。

完成此操作的另一种方法是获取旧输入并进行比较。

【问题讨论】:

  • 但是为什么选择了两个选项?
  • @Purmou 这是一个多选框。这就是为什么有两个选择的选项。
  • @Jithin 我看过那个问题,但这不是我要找的。​​span>

标签: jquery


【解决方案1】:

这样做:

var valueBeforeChange = $('select[name="inputUserRoles[]"]').val();

$('select[name="inputUserRoles[]"]').change(function(e) {
  var inputUserRoles = $(this).val();

  //you can compare here with value before change
  ...

  valueBeforeChange = inputUserRoles;
});

【讨论】:

  • 我什至想过比较旧输入和新输入,但它有点麻烦。这是唯一可行的方法吗?
  • 我认为是因为我不认为事件对象可以存储这些信息。
  • 我不是很擅长js,那么有没有一个函数可以比较两个数组,直接找出区别呢? :P
  • 没有这个功能,你必须遍历第一个数组,看看你的值是否存在于第二个数组中。
  • 我现在将完整的数组发送到我的控制器并在 PHP 中使用 array_diff 来完成工作。它更简单,适合我的需要:) 谢谢。
猜你喜欢
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
  • 2014-01-06
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
相关资源
最近更新 更多