duanchi0897
2012-11-17 05:08
浏览 54
已采纳

使用复选框状态存储在数据库中的复选框禁用jquery-ui sortable

I am using the jquery-ui sortable interaction. I want to have a checkbox that disables the sortable interaction when it is checked. Both the list order and checkbox status are stored in a mysql database and loaded dynamically using php code and updated with ajax. The code below works for everything except the sortability status of the list does not match the checkbox status when the page first loads. After the first time the checkbox is checked everything works fine. The php variable $items is an object that holds the list and $lock holds either "checked" or "unchecked".

<head>
<script>        
$(function() {  
        $("#sortable").sortable({stop:function(i) {
        $.post('/index.php/welcome/process_sort',     $("#sortable").sortable("serialize"))
        }})
    });
</script>
<script>    
     $(function() { 
        $("#disabler").change(function() { 
            if (this.checked) {
                $("#sortable").sortable( "option", "disabled", true );       
            } else { 
                $("#sortable").sortable("option", "disabled", false);
            }
        })
    });

</script>
</head>
<body>
<input type="checkbox" id="disabler" value="disabler" <?php echo $lock ?>  >disable<br>    </input>

<ul id="sortable">
    <?php
        foreach ($item as $row) {
        $my_id = "id_".$row->id_items;
        $my_text = $row->text;
        ?>
        <li id=<?php echo"$my_id" ?> name=<?php echo"$my_id" ?> value=<?php   echo "$my_text"?> class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s">    </span><?php echo "$my_text"?></li>
            <?php   
        }
    ?>
</ul>
</body> 

I tried adding a $(document).ready function that contained the jquery if block, but it broke the sortable interaction.

图片转代码服务由CSDN问答提供 功能建议

我正在使用jquery-ui可排序的交互。 我想要一个复选框,在选中时禁用可排序的交互。 列表顺序和复选框状态都存储在mysql数据库中,并使用php代码动态加载并使用ajax更新。 下面的代码适用于所有内容,除了列表的可排序性状态与页面首次加载时的复选框状态不匹配。 第一次检查复选框后,一切正常。 php变量$ items是一个保存列表的对象,$ lock保持“已选中”或“未选中”。

 &lt; head&gt; 
&lt; script&gt;  
 $(function(){
 $(“#sortable”)。sortable({stop:function(i){
 $ .post('/ index.php / welcome / process_sort',$(“#sortable)  “).sortable(”serialize“))
}})
}); 
&lt; / script&gt; 
&lt; script&gt;  
 $(function(){
 $(“#disabler”)。change(function(){
 if(this.checked){
 $(“#sortable”)。sortable(“option”,“  disabled“,true); 
} else {
 $(”#sortable“)。sortable(”option“,”disabled“,false); 
} 
})
}); 
 
&lt  ; / script&gt; 
&lt; / head&gt; 
&lt; body&gt; 
&lt; input type =“checkbox”id =“disabler”value =“disabler”&lt;?php echo $ lock?&gt;  &GT;禁用&LT峰; br&GT;  &lt; / input&gt; 
 
&lt; ul id =“sortable”&gt; 
&lt;?php 
 foreach($ item as $ row){
 $ my_id =“id _”。$ row-&gt; id_items  ; 
 $ my_text = $ row-&gt; text; 
?&gt; 
&lt; li id =&lt;?php echo“$ my_id”?&gt;  name =&lt;?php echo“$ my_id”?&gt;  value =&lt;?php echo“$ my_text”?&gt;  class =“ui-state-default”&gt;&lt; span class =“ui-icon ui-icon-arrowthick-2-n-s”&gt;  &lt; / span&gt;&lt;?php echo“$ my_text”?&gt;&lt; / li&gt; 
&lt;?php 
} 
?&gt; 
&lt; / ul&gt; 
&lt; / body&gt;  
   
 
 

我尝试添加一个包含jquery if块的$(document).ready函数,但它破坏了可排序的交互。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题