在这里进行一些猜测。以下是我总结的内容:
-
-
信件一旦被使用,就不能重复使用
-
-
用户只能清除整个字段(所有信件均无顺序返回)
<div class="word">
<div class="letter">s</div>
<div class="letter">t</div>
<div class="letter">a</div>
<div class="letter">c</div>
<div class="letter">k</div>
<div class="letter">o</div>
<div class="letter">v</div>
<div class="letter">e</div>
<div class="letter">r</div>
<div class="letter">f</div>
<div class="letter">l</div>
<div class="letter">o</div>
<div class="letter">w</div>
</div>
<div class="field ui-widget">
<div class="ui-widget-header ui-corner-top">
Assign Rooms
</div>
<div class="ui-widget-content">
<div class="field-wrapper">
<input placeholder="Staff Name" type="text" />
<a class="clear-button">Clear Text</a>
</div>
<div class="field-wrapper">
<input placeholder="Staff Room" />
<a class="clear-button">Clear Text</a>
</div>
<a class="add-button">+</a>
</div>
<div class="ui-widget-header ui-corner-bottom">
Press + to addanother form field.
</div>
</div>
.ui-widget-header {
padding: .4em;
font-weight: normal;
margin: -1px 0;
}
.field-wrapper {
display: inline-block;
margin: 1em .25em;
position: relative;
z-index: 0;
}
.field-wrapper input {
z-index: 0;
}
.field-wrapper .small-button {
background: #ccc;
border: 0;
border-radius: 50%;
padding: 0;
width: 20px;
height: 20px;
position: absolute;
top: 4px;
left: 89%;
}
.word {
padding: .2em;
}
.letter {
display: inline-block;
border: 0;
border-radius: 15%;
background: #ccf;
width: 1.125em;
height: 1.125em;
text-align: center;
}
.letter.ui-dragging {
z-index: 1000;
}
JavaScript
$(function() {
function makeDrag($el) {
$el.draggable({
revert: true
});
}
makeDrag($(".letter"));
$(".add-button").button();
$(".clear-button").button({
classes: {
"ui-button": "ui-corner-all small-button"
},
icon: "ui-icon-close",
showLabel: false
}).click(function(e) {
var $me = $(this);
var $field = $me.parent().find("input");
var origValue = $field.val();
var $blanks = $(".letter:not(.ui-draggable)");
for (var i = 0; i < origValue.length; i++) {
$blanks.eq(i).html(origValue[i]);
}
makeDrag($blanks);
$field.val("");
$me.hide();
}).hide();
$(".field-wrapper").droppable({
drop: function(e, ui) {
var letterValue = ui.helper.text().trim();
var $field = $(this).find("input");
$field.val($field.val() + letterValue);
ui.helper.html(" ").draggable("destroy");
if ($field.val().length) {
$field.next("a").show();
}
return false;
}
});
$(".field-wrapper input").on("click keydown", function(e) {
e.preventDefault();
return false;
});
});
https://jsfiddle.net/Twisty/kLdcj8m1/
这段代码有很多优点和缺点,但它基本上可以满足您的需求。请注意,可拖放区域是包装器,而不是textbox元素本身。在我看来,这使它更容易处理。