【发布时间】:2017-10-15 20:43:09
【问题描述】:
我有以下问题。我想做接下来的事情。在我正在开发的网页中,当用户登录时,他必须排列一些变量,我需要保存他排列它们的顺序。使用此代码,我可以将每个项目的订单值设置为隐藏的表单输入,因此当用户按下“保存”时,这些值将保存在 MySQL 数据库中。直到这里它工作正常:
$(document).ready(function() { $( function() {
$( "#sortable" ).sortable( {
placeholder: "ui-state-highlight",
helper: 'clone',
sort: function(e, ui) {
$(ui.placeholder).html(Number($("#sortable > li:visible").index(ui.placeholder)) + 1);
},
update: function(event, ui) {
var $lis = $(this).children('li');
$lis.each(function() {
var $li = $(this);
var newVal = $(this).index() + 1;
// $(this).children('.sortable-number').html(newVal);
$(this).children('input').val(newVal);
});
} }
);
$( "#sortable" ).disableSelection();
} ); } );
这是 PHP 的输出(每个项目看起来像这样):
<li class="ui-state-default bookred"><input type="hidden" name="grammar1" value="<?php echo $grammar1 ?>"><a data-fancybox="" data-src="exercises/grammar-pronomen.php" href="javascript:;"><i class="fa fa-eye" aria-hidden="true"></i></a><a href="#" class="delete"><i class="fa fa-trash" aria-hidden="true"></i></a> <span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Pronomen</li>
当用户刷新网页时,问题就来了。他选择的排列元素的顺序没有得到尊重。从 MySQL 获取值不是问题,问题是在 UI 中设置这些值,以便按照用户的方式排列项目。
感谢您的帮助。
【问题讨论】:
-
我建议在
update期间使用任何代码在 AJAX POST 中提交表单。这样,当用户进行更改时,数据库中的订单就会更新,而不仅仅是在他们提交表单时。这可能会解决您的用户刷新问题,因为 DB 值会有所不同,并且 PHP 应该在呈现页面时提取新值。 -
如果您不想保存任何更改(仅通过按钮),您可以对这些值进行 cookie,或者您可以在每次用户直接将其设置到数据库时 AJAX 位置,以临时表或内存、会话或类似的东西。
-
嗨。事实上,我需要保存更改。如果用户在其他场合登录页面,他需要在离开时查看值的顺序。
标签: jquery mysql jquery-ui jquery-ui-sortable