jQuery Mobile Slider 禁用点击事件

by admin on 2019年2月14日

在使用jQuery Mobile
Slider时,发未来页面上下拖动时,很简单不小心触发Slider的点击事件,从而导致误操作。为此需求禁用Slider的点击事件。

因为另有开发记录工具最新没怎么在 cnblog
写开发备忘.但是小编认为那么些是个相比较严重的标题,觉得有必不可少让越多的人掌握处理措施,所以在
cnblog 也放上一篇希望广为传播.

法定API并不曾提供禁用点击事件的轩然大波的不二法门,由此要促成这一意义只好另辟蹊径。留意到点击Slider时都要接触2个mousedown方法改变滑块所处的岗位,不妨重写那个点子,在mousedown事件触发时,保持原来的滑块地点不变。

因为以后网络上vs二零一零能一向动用的本子很难找,所以放三个修改自 sourceforge
能用的版本,并且认证修改的格局.

兑现格局:


  • 第一找到要操作的靶子:

首先次修改

必发365乐趣网投手机版 1


  • 兑现代码:

    1 / 控制滑块任意地方点击事件不可用 /
    2 function disableSliderTrack($slider) {
    3
    4 $slider.bind(“mousedown”, function (event) {
    5
    6 var x = event.pageX;
    7 var y = event.pageY;
    8
    9 var $handle = $(this).find(“.ui-slider-handle”);
    10
    11 var left = $handle.offset().left;
    12 var right = left + $handle.outerWidth();
    13 var top = $handle.offset().top;
    14 var bottom = top + $handle.outerHeight();
    15
    16 return (x >= left && x <= right && y >= top && y <= bottom); 17 18 }); 19 }

NVelocity 那些工具的接纳相信超过半数网友都以因为和自身一样在 java 时使用的是
Velocity ,因此在应用 C# 尤其愿意有一个近似的工具包.而寻找拿到的就是
NVelocity.

 

NVelocity 两三年前小编是用过的,所以并不以为本次用会有啥样难题.
照例在网上检索后插足工程及网上的各个示例就点运维.为料出现了 “It appears
that no class was specified as the ResourceManager…”
,心里也并不慌张,因为依据经验估摸也等于某些 dll 引用没弄进来.
结果折腾了各样文件和网上的各样例子就是不对.
不知不觉二个早晨就过去了,觉得事情有些严重,放下马虎的情怀,打开了本身从前的工程.发现有多少个例外的地点:
1.此前集团用的是 vs二〇〇九 , 以往用的是 vs二零一零,不只怕直接编译.

  • 在页面加载时开始化所有滑块对象

    1 $(function(){
    2 disableSliderTrack($(“.ui-slider-track”));
    3 });

2.从前工程中唯有1个 NVelocity.dll 文件,也未曾源码,而本次下载的却有
NVelocity.dll,NVelocity.http.dll 及源码等五个文件.

 

行吗,小编把这些 NVelocity.dll
替换好了.但编译时即报错,查看了文件的版本音讯,其写明了是 for .net 4.0
的,当然那时直接换用 vs二〇〇九 就好了.但是自家的景色有点特殊,生产条件是 .net
2.0 的,不是太便宜让人升迁,再说升级 .net 环境有时候会变成魔难 —
小编原先升级 .net 3.5 时相遇过很频仍,纵然 .net 4.0
好很多.实在不想大惊小怪.

从那之后水到渠成。

好吧,又在网上搜索了好多的近乎难点.都不行.时期看到说因为 NVelocity
交由了怎么着 xxx 维护了,所以 NVelocity 的源码版本有三个.
那时意外在某网友的例子中发现了能用的 .net 2.0 版本 NVelocity.dll
但其文件并未版本消息,明显不是合法的,但那位网友的篇章突显是反复转载已经找不到其何等修改的新闻了.作者下载的公文位于(NVelocity-0.4.2.8580):

规章大道通休斯敦,通过重写控件的mousedown方法也能兑现对click事件的“禁用”。

http://nvelocity.sourceforge.net/

因为那是 google 搜索的率先个,而 baidu 搜索的第3个就是非凡 for .net 4.0
版本的:

http://nvelocity.codeplex.com/

而网友尤其可用的 .net 2.0 版本现已没有下载地址了.说实话小编晓得不了
sourceforge.net 
那些怎么用持续,这么闻明的控件在这么知名的网站上提供的公文居然是错误的.通过本人寻找的其它音信,相应的
bug 应当是有人提交了的,不知何故没有交到到 sourceforge.net 那里.

好了,不管那么多,至少在自家的中文版本 vs2010上须求修改以下一些才能健康使用:

文件 ResourceLocator.cs 中

            try
            {//clq
                foreach (Assembly a in assemblies)
                {
                    String prefix = a.FullName.Substring(0,
a.FullName.IndexOf(“,”)).ToLower();
                    String[] names = a.GetManifestResourceNames();
                    try
                    {//clq //那里都不利,应当是目前的两句话造成的
                    foreach (String s in names)
                    {

                        if (s.ToLower().Equals(fn) ||
s.ToLower().Equals(prefix + “.” + fn))
                        {
                            this.filename = s;
                            assembly = a;
                            isResource = true;
                        }
                    }
                    }
                    catch (System.Exception ex)
                    {
                        String s = ex.Message;
                        System.Console.WriteLine(“bbbbbb:” + s);
                    }//clq
                }
            }catch(System.Exception ex)
            {
                String s = ex.Message;
                System.Console.WriteLine(“aaaaaa:” + s);
            }//clq
            
        }//if clq

必发365乐趣网投手机版,基于本人的测试大约的失误原因是,某些能源文件在反射机制搜索时不扶助有个别接口,导致其极度退出了剩余财富的处理.所以直接加多少个try 就行了(ps:反射完成,大概效用不高啊).

如此那般校订后上面那样的代码就能够通过运维了.

            VelocityEngine vltEngine = new VelocityEngine();
            //4.0 这里是 RuntimeConstants.RESOURCE_LOADER
           
vltEngine.SetProperty(RuntimeConstants_Fields.RESOURCE_LOADER,
“file”);
            string path = _this.Server.MapPath(“~/”);
           
vltEngine.SetProperty(RuntimeConstants_Fields.FILE_RESOURCE_LOADER_PATH,
path);
            vltEngine.Init();//不修改库代码,那里会报错


其次处改动


如上修改后采用一段时间后,因为自己个人的工具链中很多是不援救 utf8
的(恐怕很辛劳),在此将模板改为了普通的 gbk
编码情势.那时发现那么些本子没办法校正编码方式.小编修改了1个地点才行.符合规律的编码校勘代码为:

           
vltEngine.SetProperty(RuntimeConstants_Fields.OUTPUT_ENCODING,
“GB2312”);//修改 NVelocity-0.4.2.8580 的源码后才能用那三个,并且最好是用
GBK
           
vltEngine.SetProperty(RuntimeConstants_Fields.INPUT_ENCODING,
“GB2312”);//

在此版本 nvelocity 中不起功效,需求修改:

Template.cs 文件中

            //System.IO.StreamReader br = new System.IO.StreamReader(new
System.IO.StreamReader(is_Renamed,
System.Text.Encoding.GetEncoding(encoding)).BaseStream);
            System.IO.StreamReader br = new System.IO.StreamReader(new
System.IO.StreamReader(is_Renamed,
System.Text.Encoding.GetEncoding(encoding)).BaseStream,
System.Text.Encoding.GetEncoding(encoding));//clq 2014.05.23

很理解小编或者是鬼子,编码指定的岗位弄错了.


为便于大家参考,我放上修改后的全体门类文件,那里用的是 debug
版本,对功能有须要的条件请自行编译其余版本.代码修改的地点不多,我们可全文检索
“//clq”
字样就能找到,其余代码因为本身水平有限也看不懂也不敢乱改.出于稳定和不想惹麻烦的案由未来也不打算大改,能在自身眼下这几个小品种中用就行.

下载地址为:

http://files.cnblogs.com/-clq/NVelocity-0.4.2.8580%5B2014.05.23%5D%5Bclq\_modify%5D.zip


若是还有其余 bug 作者会再上传新版本.其余也期待有询问内情的网友介绍下
nvelocity 如此混乱的原因.

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图