输入文本框不能用jQuery Draggable编辑?

时间:2010-10-04 20:24:40

标签: javascript jquery html jquery-ui

我调用了一个javascript函数,它使用文本输入框动态构建<li>并向下拉。使用jQuery的Draggable,下拉工作正常,但我无法编辑输入文本框?

function addField(type){
  var html = '';
  html += '<li class="ui-state-default">';
  if(type == 'text'){
   html += '<b>Text Field</b><br />';
   html += 'Field Name: <input type="text" name="text" id="text">&nbsp;&nbsp;&nbsp;';
   html += 'Field Size: <select name="textSize" id="textSize' + fRank + '"><option value="small">Small</option><option selected value="medium">Medium</option><option value="large">Large</option><option value="large2">Large 2 Lines</option><option value="large3">Large 3 Lines</option><option value="large4">Large 4 Lines</option></select>';
  }
  html += '</li>';
  $("#sortableFields").append(html);

  $(function() {
       $( "#sortableFields" ).sortable({
      revert: true
    });
    $( "#draggable" ).draggable({
           connectToSortable: "#sortableFields",
    helper: "clone",
    revert: "invalid",
    cancel: ':input,option'
    });
    $( "ul, li" ).disableSelection();  
             });
}

我玩过取消选项,但没有帮助。

你有什么建议?

3 个答案:

答案 0 :(得分:16)

我认为问题在于您对.disableSelection()元素使用<li>。而不是这样做,将文本(<input>之外的内容)放入<span>元素,然后禁用跨度

$('li > span').disableSelection();

答案 1 :(得分:2)

试试这个:

$('li.ui-state-default').on( 'click', 'input', function () {    
    $(this).focus();
});

它对我有用。

答案 2 :(得分:0)

这对我有好处:


    $('input').bind('click.sortable mousedown.sortable',function(ev){
        ev.target.focus();
    });

original answer