2017-08-24 62 views
0

我想通过Ajax将所有多选项目写入服务器端数据库表中。我不想调用函数并在每个选择/取消选择操作上写入。我想让用户选择并取消选择所有需要的选项,然后我想进行ajax调用并将结果写入数据库一次。如何捕获Multiselect选项列表中的所有选定项目以及使用jQuery进行捆绑销售

我想在jQuery中处理这个。

我有Ajax脚本和服务器端数据库更新脚本工作 - 没问题。

捕获多选项目并进行ajax调用的最佳方法是什么?

焦点离开选择框时会是什么?或者其他一些更好的方法?

谢谢你指点我正确的方向。

修订#1

它看起来像.change()是去这里...不同之处,当然,添加一个按钮,在回答提出的唯一途径。按钮选项不是我希望与应用程序一起使用的方式。我似乎无法在我的<select>元素上捕获.focus().blur().focusout()

修订#2

尝试这个 - 不工作

$('select.driverItems').on('blur',function(){ 
    alert('focused out'); 
    console.log($(this).val()); 
    }); 

尝试这个 - 不工作

$('select#driverIDs_0').on('blur',function(){ 
    alert('focused out'); 
    console.log($(this).val()); 
    }); 

尝试这样 - 它的作品!

$('select.driverItems').change(function() { 
    alert('focused out'); 
    console.log($(this).val()); 
    }); 

回答

0
  • 然后让用户选择任何他想做的
  • 在HTML中
  • 添加一个按钮,当按下按钮
  • 获取jQuery的所有选定值
  • 并作出阿贾克斯调用并保存值
+0

好的,谢谢你的建议。我更喜欢按照我描述的方式来做,因为我并排了3种不同的选择选项,我不想添加更多的按钮。我正在研究'focusout()'作为可能的解决方案。不知道这是否是最好的,但我仍在尝试。 –

1

从技术上讲,没有办法kn因为用户将离开选择过程(填充其他字段,替代选项卡,选择要阅读的消息等)还有其他因素会触发失去焦点的事件。

尽可能多的,你也不希望有很多的往返服务器,所以你有一个好主意不要更新选择/取消选择。

只有合理的方式才能做到这一点,而不会产生不必要的结果,那就是添加一个触发ajax的按钮。

+0

谢谢@Nathan。 [第1部分] jQuery中有没有像“'.lostFocusEvent()'”这样的东西,我可以试试?我现在正在使用'.on('change',...)'来实现,但我宁愿在每次点击鼠标时都点击服务器。但是,如果我唯一的解决方案是添加另一个按钮,我会在每次点击鼠标时击中服务器。从可用性的角度来看,我的客户会因为Web表单已经非常复杂并且包含数十个数据收集点而不得不点击一个提交按钮而感到怪异。 –

+0

[第2部分]我需要实现3个单独的'.focusout()'实例来将多选值发送回服务器,所以我不想用3个额外的提交按钮来结婚。谢谢。 –

+1

@ H.Ferrence是的,你可以使用'.on('blur',函数(evt,args){...})https://api.jquery.com/blur/ – Nathan

相关问题