3 回答
TA贡献1775条经验 获得超11个赞
为了扩展Vincent Ramdhanie的建议,请看做这样的事情。本质上,您最终拥有了自己的jQuery函数,可以在其他地方重用。
步骤1:创建jQuery函数
(function($) {
$.fn.selected = function(fn) {
return this.each(function() {
var clicknum = 0;
$(this).click(function() {
clicknum++;
if (clicknum == 2) {
clicknum = 0;
fn(this);
}
});
});
}
})(jQuery);
步骤2:确保引用了新创建的jQuery Function的文件以供使用:
<script src="Scripts/jqDropDown.js" type="text/javascript"></script>
步骤3:使用新功能:
$('#MyDropDown').selected(function() {
//Do Whatever...
});
原始信息
使用当前代码库,从asp:DropDownList中选择相同的值将不会触发更改事件。
您可以尝试为.blur事件添加另一个jQuery函数。当控件失去焦点时将触发:
$('#dropdownid').blur(function() {......});
如果模糊功能对您不起作用,我将添加一个刷新按钮或会影响您尝试使用的功能的东西。
TA贡献1772条经验 获得超5个赞
尝试这个:
$(document).ready(function(){
var clicknum = 0;
$("#dropdownid").click(function(){
clicknum++;
if(clicknum == 2){
alert($(this).val());
clicknum = 0;
}
});
});
首先,您要创建一个变量clicknum来跟踪点击次数,因为您不希望用户每次单击下拉框时都触发该事件。第二次单击是用户所做的选择。
如果click num恰好是2,则是第二次单击,因此触发该事件,并在下次将clicknum重置为0。否则什么都不做。
TA贡献1712条经验 获得超3个赞
当前的许多解决方案在很多情况下都会失效。任何依赖两次检查点击次数的解决方案都非常善变。
要考虑的一些方案:
如果单击,然后先关闭,然后再打开,它将同时计入点击和触发次数。
在firefox中,只需单击鼠标即可打开菜单并将其拖动到选定的选项,而无需抬起鼠标。
如果您使用键盘击键的任意组合,则可能会使点击计数器不同步或完全错过更改事件。
您可以使用Alt+ ↕(或Spacebar在Chrome和Opera中使用)打开下拉菜单。
当下拉列表具有焦点时,任何箭头键都将更改选择
打开下拉菜单后,单击Tab或Enter将进行选择
这是更全面的扩展:
查看是否已选择选项的最可靠方法是使用change事件,您可以使用jQuery的.change()处理程序进行处理。
剩下要做的唯一事情就是确定是否再次选择了原始元素。在任何情况下,
这个问题被问了很多(一,二,三)而没有一个很好的答案。
最简单的方法是检查元素上是否存在clickor keyup事件,但Chrome,IE和safari似乎不支持元素上的事件,即使它们在w3c建议中也是如此option:selectedoption
Select元素内部似乎是一个黑匣子。如果您监听事件,甚至无法分辨事件发生在哪个元素上,或者列表是否打开。
接下来最好的事情似乎是处理blur事件。这将表明用户已将注意力集中在下拉列表上(也许看到了列表,也许没有看到),并决定要保留原始值。要立即继续处理更改,我们仍将订阅该change活动。为了确保我们不会重复计算,如果更改事件被引发,我们将设置一个标志,这样我们就不会触发两次:
码:
(function ($) {
$.fn.selected = function (fn) {
return this.each(function () {
$(this).focus(function () {
this.dataChanged = false;
}).change(function () {
this.dataChanged = true;
fn(this);
}).blur(function (e) {
if (!this.dataChanged) {
fn(this);
}
});
});
};
})(jQuery);
然后像这样调用:
$("#dropdownid").selected(function (e) {
alert('You selected ' + $(e).val());
});
- 3 回答
- 0 关注
- 1127 浏览
相关问题推荐
添加回答
举报