javascript - 如何获取div拖动后的起始值和结束值

标签 javascript jquery

嗨,我有一个可拖动的div。我的要求是 1.我想要div拖入文本框后的起始值和结束值 2.现在它只是在右侧拖动,我希望它也从 div 的左侧拖动 我尝试了一些步骤,但它并不完美,因为该值没有显示,并且从左侧拖动不起作用中间表是我的父 div

   $(function () {
        var container = $('.middletablediv'),
       base = null,
       handle = $('.handle'),
       isResizing = false,
   screenarea = screen.width;

        handle.on('mousedown', function (e) {
            base = $(this).closest(".scalebar");
            isResizing = true;
            lastDownX = e.clientX;
            offset = $(this).offset();
            xPos = offset.left;

        });

        $(document).on('mousemove', function (e) {
            // we don't want to do anything if we aren't resizing.
            if (!isResizing)
                return;

            p = parseInt(e.clientX - base.offset().left),
            // l = parseInt(p * (3 / 11));
            base.css('width', p);
            k = parseInt(xPos - base.offset().left);


            $("#startvalue").value(k)
            $("#stopvalue").value(p)
        }).on('mouseup', function (e) {
            // stop resizing
            isResizing = false;




        });
        });
.handle{
    position: absolute;

    top:1px;
    right: 0;
    width: 10px;
    height: 5px;
    cursor: w-resize;
    }
  .middletablediv{
   float:left;
  width:35%;
   
}
  .scalebar{
    margin-top: 13px;
    height: 7px;
    position: relative;
   width:20px;
   background-color: green; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="middletablediv">
    <div id="newvalue1" class="scalebar">
        <div class="handle" style="left:0"></div>  <div class="handle"></div>
    </div>
</div>
    <input id="startvalue" type="text">startvalue</input>
    <input id="stopvalue" type="text" />stopvalue</input>

我如何解决这个问题

最佳答案

您应该使用val()而不是value()。此外,拖动的方式最终值可能小于起始值,因此我添加了一些内容来以简单的方式处理该问题(只需切换值)。最后,要从左侧拖动,您应该以不同的方式处理左侧拖动,因此我给左侧 handle 一个唯一的 id,并稍微填充了整个父 div 以使其更加明显。

$(function () {
        var container = $('.middletablediv'),
       base = null,
       handle = $('.handle'),
       isResizing = false,
       isLeftDrag = false;
   screenarea = screen.width;

        handle.on('mousedown', function (e) {
            base = $(this).closest(".scalebar");
            isResizing = true;
          if($(this).attr('id')=='lefthandle')isLeftDrag=true;
          else isLeftDrag=false;
            lastDownX = e.clientX;
            offset = $(this).offset();
            xPos = offset.left;

        });

        $(document).on('mousemove', function (e) {
            // we don't want to do anything if we aren't resizing.
            if (!isResizing)
                return;
            if(isLeftDrag){
              
              p = parseInt(base.offset().left - e.clientX);
            k = parseInt(base.offset().left - xPos);
              
              base.css('margin-left',-p);
              base.css('width',p); 
              }
          else{
            p = parseInt(e.clientX - base.offset().left),
            // l = parseInt(p * (3 / 11));
            base.css('width', p);
            k = parseInt(xPos - base.offset().left);
            }
            //if(k>p){var temp = k; k = p; p = temp;}

            $("#startvalue").val(k)
            $("#stopvalue").val(p)
        }).on('mouseup', function (e) {
            // stop resizing
            isResizing = false;




        });
        });
.handle{
    position: absolute;

    top:1px;
    right: 0;
    width: 10px;
    height: 5px;
    cursor: w-resize;
    }
  .middletablediv{
   float:left;
  width:35%;
   
}
  .scalebar{
    margin-top: 13px;
    height: 7px;
    position: relative;
   width:20px;
   background-color: green; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="middletablediv" style="padding-left:100px; overflow:visible;">
    <div id="newvalue1" class="scalebar">
        <div class="handle"id="lefthandle" style="left:0"></div>  <div class="handle"></div>
    </div>
</div><br><br>
    <input id="startvalue" type="text">startvalue</input>
    <input id="stopvalue" type="text" />stopvalue</input>

关于javascript - 如何获取div拖动后的起始值和结束值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38801135/

相关文章:

javascript - 移动网站 anchor 链接不起作用

php - 帮助!用户注册问题!

javascript - 单击任何项​​目时显示菜单项

javascript - 带有 img 的包装器如何占据所有屏幕?

javascript - 表单提交被取消,因为表单未连接 Vue js 与 Laravel

javascript - 专注于输入并使用 Jquery 移除焦点

javascript - 想要在数据表中排序时触发自定义事件

javascript - 如何在 angularjs 中通过数组过滤对象

javascript - 文本修饰不影响超链接

jquery - 为什么我无法在不破坏代码的情况下阻止动画队列堆叠?