为什么我的ASP.NET jQuery RadSlider箭头单击事件没有触发?

时间:2015-01-23 03:08:28

标签: c# jquery asp.net telerik

我使用Telerik RadSlider和jQuery 1.10.2。目前我正在捕捉2个事件:

  1. OnClientValueChanged:单击向上/向下箭头手柄或正在移动拖动滑块时触发。
  2. OnClientSlideEnd:当拖动滑块完成移动时触发(但在单击箭头控制柄时不会触发)。
  3. 我的问题是如何检测何时只点击向上/向下箭头手柄?显然我可以挂钩OnClientValueChanged(上面的第一个事件)并调用连接到OnClientSlideEnd(第二个事件)的函数,但由于我每次触发OnClientSlideEnd时都在进行计算并将值保存到数据库中,因此它将是令人难以置信的每次拖动滑块手柄时都无法进行计算并保存这些值。

    这是我当前的RadSlider设置。请注意,句柄是动态生成的,但在检查Chrome中的元素时,它有一个" rslHandle":

    
    
    $(document).ready(function myfunction() {
      $('.rslHandle, .rslHorizontal, .RadSlider').live('click', 'body', function () {
        alert('arrow clicked');
      });
    });
    
    <telerik:RadSlider ID="radSliderTest" runat="server" CssClass="CustomSliderLook" OnClientValueChanged="OnClientSlideChanged" OnClientSlideEnd="OnClientSlideEnd" MaximumValue="100" TrackMouseWheel="true" Width="300px" />
    &#13;
    &#13;
    &#13;

    我已经尝试了过时的&#34;直播点击&#34;,&#34;点击&#34;,只是简单的&#39; &#34;单击&#34;方法,没有触发。通过Telerik的RadSlider事件文档,除了发布的here之外,我还没有找到任何箭头更改事件。非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。它通过像这样捕获mouseup事件来工作:

&#13;
&#13;
$(".rslHandle").live('mouseup', function (e) {
    alert('arrow clicked');
});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我刚尝试了click()jQuery附加到click事件的方式:

    function pageLoad() {
        $telerik.$(".rslHandle").click(function () { alert(1); });
    }

使用Sys.Application.Load(喜欢这样的IScriptControls)。

    $telerik.$(document).ready(function () {
        $telerik.$(".rslHandle").click(function () { alert(1); });
    });

其中匿名函数附加在document.ready jQuery事件中。

两者都使用jQuery Telerik提供。

您可以级联选择器和/或使用滑块本身的OnClientLoad事件,这样您就可以知道哪个是创建滑块的HTML元素。

但是,我不确定为什么使用内置事件对你不好。如果您需要最终值,无论最终用户更改了多少次,为什么不简单地使用服务器上的 radSliderTest.SelectedValue属性?最终,页面将被POST,以便您可以获得其余的文本框,下拉列表等,这样您就可以使用此时刻在服务器上获取滑块值,而无需任何其他代码。滑块还提供 AutoPostBack 属性,因此当用户更改值时,它可以POST页面并触发 OnValueChanged 服务器事件。