Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery UI拖放(获取可拖动值以显示和隐藏textarea框)_Javascript_Jquery_Html_Jquery Ui - Fatal编程技术网

Javascript JQuery UI拖放(获取可拖动值以显示和隐藏textarea框)

Javascript JQuery UI拖放(获取可拖动值以显示和隐藏textarea框),javascript,jquery,html,jquery-ui,Javascript,Jquery,Html,Jquery Ui,好极了!我有一个简单的函数,使用jqueryui展示拖放功能。我想将两个图像(两个div)拖到一个屏幕(一个div)中。目标是将图像#1拖放到目标上时,屏幕将显示textarea框,而将另一个拖动到同一屏幕时,textarea将消失。JSFIDLE示例点击 我尝试添加“if(condition)”语法来区分这两种不同的状态。然而,它根本不起作用。我的脚本如下: <script> $(function() { $(".sample").draggable({ rever

好极了!我有一个简单的函数,使用jqueryui展示拖放功能。我想将两个图像(两个div)拖到一个屏幕(一个div)中。目标是将图像#1拖放到目标上时,屏幕将显示textarea框,而将另一个拖动到同一屏幕时,textarea将消失。JSFIDLE示例点击

我尝试添加“if(condition)”语法来区分这两种不同的状态。然而,它根本不起作用。我的脚本如下:

<script>
  $(function() { 
  $(".sample").draggable({ 
  revert: true     
  });

   $("#screen").droppable({ 
      tolerance: 'touch', 
      over: function(event, ui){ 
       $(this).removeClass('out').addClass('over'); },
         out: function(event, ui) {
          $(this).removeClass('over').addClass('out'); }, 
          drop: function(event, ui) {
                        //I believe something is wrong here!
              var idVal=$(ui.draggable).attr('id');
                if ( idVal=="sample6"){     
                  $('#text').show();}
                  else if(idVal=="sample5"){
                $('#text').hide();}

                  }

                });
                 }); 
  </script>
<div id="screen" style="float:left">

<div id="text" class="textarea" ><textarea  style="border:hidden; color: yellow; background-color: transparent; z-index:1000px;">Text Here!</textarea>

</div>
</div>

<div id="memo"></div>

<div id="sample6" class="sample">
  <p>Show the Textarea</p>
</div>
<div id="sample5" class="sample">
  <p>Delete the Textarea</p>
</div>
</div>

$(函数(){
$(“.sample”).draggable({
回复:真
});
$(“#屏幕”)。可拖放({
宽容:“触摸”,
结束:函数(事件,ui){
$(this.removeClass('out').addClass('over');},
输出:功能(事件、用户界面){
$(this).removeClass('over').addClass('out');},
drop:函数(事件、用户界面){
//我相信这里出了点问题!
var idVal=$(ui.draggable).attr('id');
如果(idVal==“sample6”){
$('#text').show();}
else if(idVal==“样本5”){
$('#text').hide();}
}
});
}); 
HTML标记如下所示:

<script>
  $(function() { 
  $(".sample").draggable({ 
  revert: true     
  });

   $("#screen").droppable({ 
      tolerance: 'touch', 
      over: function(event, ui){ 
       $(this).removeClass('out').addClass('over'); },
         out: function(event, ui) {
          $(this).removeClass('over').addClass('out'); }, 
          drop: function(event, ui) {
                        //I believe something is wrong here!
              var idVal=$(ui.draggable).attr('id');
                if ( idVal=="sample6"){     
                  $('#text').show();}
                  else if(idVal=="sample5"){
                $('#text').hide();}

                  }

                });
                 }); 
  </script>
<div id="screen" style="float:left">

<div id="text" class="textarea" ><textarea  style="border:hidden; color: yellow; background-color: transparent; z-index:1000px;">Text Here!</textarea>

</div>
</div>

<div id="memo"></div>

<div id="sample6" class="sample">
  <p>Show the Textarea</p>
</div>
<div id="sample5" class="sample">
  <p>Delete the Textarea</p>
</div>
</div>

这里有文字!
显示文本区域

删除文本区域


我不知道Jquery UI是否可以让我将具有2个或更多“id”的不同对象拖放到单个可拖放区域,以触发/触发不同的结果(“例如显示或隐藏文本框或更改图像”)。欢迎提供任何有用的建议或解决方案

我认为这个jsFiddle完成了你在这里要问的问题。请记住,如果这是您想要的,您仍然需要将textarea设置为默认不显示。此外,我还更改了小提琴中的css,使其更易于使用

基本上,我只是做了一个console.log(idVal)来查看您是否获得了正确的id(“sample6和sample5”),但只检查了id末尾的数字,所以我更改了您的if语句以与正确的id进行比较。看起来您可能也在尝试使用数据属性,但在最后一个可拖动元素上只有一个属性

屏幕可拖放的新拖放参数

  drop: function(event, ui) {
      var idVal=$(ui.draggable).data('num');
      console.log(idVal);//you can remove this
      if ( idVal=="sample6"){     
          $('#text').show();
      }
      else if(idVal=="sample5"){
        $('#text').hide();
      }
  },

你能贴把小提琴吗?我试图构建一个,但是很难猜测css的内容。我在页面顶部附加了这个脚本的JSFIDLE示例的链接。你可以看到它下面有一个屏幕和可拖动的按钮。我想将“textarea”按钮拖到屏幕上以显示textarea(显示在屏幕上),然后在“delete textarea”框拖放到屏幕中时隐藏textarea。非常感谢!这是一个强大的补丁!