我调用了一个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"> ';
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();
});
}
我玩过取消选项,但没有帮助。
你有什么建议?
答案 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(); });