动态启用和禁用jquery旋钮
Enable and disable jquery knob dynamically
我正在使用优秀的jQuery旋钮插件。但是,我需要根据用户输入动态地启用/禁用元素。支持在页面加载时使用disabled
状态,其效果是没有鼠标(或触摸)事件绑定到canvas元素。有人知道如何解决这个问题吗?也就是说,如何(在页面加载后)绑定和解绑定这些鼠标事件侦听器?
理想情况下,我想这样做(在一个禁用的旋钮上)
$('.button').click(function() {
$('.knob').enable();
});
编辑:我最终重写了绑定/解除绑定鼠标和触摸事件的源代码。解决方案并不完美,所以如果有人有更好(更干净)的解决方案,我留下这个问题。
html
<input class="knobSlider" data-readOnly="true">
<button id="testBtn">clickHere</button>
脚本in doc ready,
$(".knobSlider").knob();
$("#testBtn").click(function(){
$(".knobSlider").siblings("canvas").remove();
if($(".knobSlider").attr("data-readOnly")=='true'){
$(".knobSlider").unwrap().removeAttr("data-readOnly readonly").data("kontroled","").data("readonly",false).knob();
}
else{
$(".knobSlider").unwrap().attr("data-readOnly",true).data("kontroled","").data("readonly",true).knob();
}
});
作为参考,你可以使用我的jsfiddle链接> http://jsfiddle.net/EG4QM/(检查这个在firefox,因为一些外部资源负载问题在chrome)
如果有人不喜欢接受的答案如何破坏和重新创建内部画布元素,那么查看我的方法:
https://jsfiddle.net/604kj5g5/1/本质上,检查draw()
的实现(我还建议监听draw
方法的值变化,而不是change
和release
,它们分别适用于和click
和mousewheel
事件,这在我看来是不方便的)。
var $input = $("input");
var knobEnabled = true;
var knobPreviousValue = $input.val();
$input.knob({
draw: function () {
if (knobPreviousValue === $input.val()) {
return;
}
if (!knobEnabled) {
$input.val(knobPreviousValue).trigger("change");
return;
}
knobPreviousValue = $input.val();
console.log($input.val());
},
});
尝试禁用该控件。我还在想办法让它恢复
$("#btnDisable").click(function(){
$("#knob").off().prev().off();
});
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用jquery在填充自动完成的值后使文本框只读
- jQuery:循环一个具有不同超时值的循环
- 用程序搜索JQuery数据表中的文本
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery旋钮显示输入完成
- jQuery旋钮animate-如何停止一直到最大值
- jQuery Knob - 按需返回多个旋钮的值
- Jquery 旋钮在浏览器调整大小时更改大小
- 如何使用jquery使jquery旋钮只读
- jquery旋钮始终处于角度方向NAN
- jquery旋钮中的Data-step属性不工作
- JQuery旋钮,输入滑块和网页音频振荡器连接但不工作
- 改变jQuery旋钮的最小/最大值
- 如何使用jQuery旋钮创建计数器
- jQuery旋钮和POST请求从JavaScript
- 如何获取Jquery旋钮的id
- Jquery旋钮未使用%设置动画
- 动态启用和禁用jquery旋钮