2013-06-24 19 views
0

我有一個視圖和一個元素。在我的cakephp代碼中,我第一次在我的視圖中使用該元素,並且它按預期工作。但我想在接下來的兩次使用相同的元素在視圖的相同形式和它根本不工作。 這是我的看法:如何在單個視圖中多次使用元素+ cakephp

<div class="add form"> 
<?php echo $this->Form->create('add name', array('class'=>'form-horizontal'));?> 
<fieldset> 
<legend> 
<?php echo __('Add Name'); ?> 
</legend> 
<?php 
echo $this->Form->input('name'); 
echo $this->Form->input('numeric_id'); 
echo $this->Form->input('parent_id', array('options' => $parents)); 
?> 
<div> 
<?php echo $this->element('editortoolbar'); ?> 
<?php echo $this->Form->label('Your Description');?> 
    <div id="editor" contenteditable=true></div> 
</div> 
<?php echo $this->Html->script('hotways'); ?> 
<?php echo $this->Html->script('welsubs'); ?> 
<?php echo $this->Html->script('application');?> 
<?php echo $this->Form->hidden('description',array('id'=>'desc'));?> 
<!-- == EDITOR END == --> 
<hr> 
</fieldset> 
<?php echo $this->Form->button(__('Submit'), array('class'=>'btn btn-primary'));?> 
<?php echo $this->Form->end();?> 
</div> 
<script> 
    $('#editor').live('keyup',function() { 
    var value = $(this).html(); 
    $('#desc').attr("value",value); 
}).keyup(); 
</script> 

現在,這是我想在這個相同的形式重複使用兩次的另一個不同類型的記述中代碼的一部分。

<?php echo $this->element('editortoolbar'); ?> 
    <?php echo $this->Form->label('Your Description');?> 
     <div id="editor" contenteditable=true></div> 
    </div> 
    <?php echo $this->Html->script('hotways'); ?> 
    <?php echo $this->Html->script('welsubs'); ?> 
    <?php echo $this->Html->script('application');?> 
    <?php echo $this->Form->hidden('description',array('id'=>'desc'));?> 

editortoolbar是我的元素,它有各種按鈕。這是代碼的屏幕截圖: enter image description here

現在,此工具欄適用於所有具有id ='editor'的div。但在這種形式下,我想用3個div的工具欄。我沒有得到任何方法來做到這一點。

任何想法或任何建議,請幫助。

+0

*「現在這個工具適用於所有具有ID =‘編輯’股利」 * ......但只有一個DIV可以有ID – Nunser

+0

沒有這個工程只有視圖中的第一個div。 – Jpm

回答

0

那麼,你將操作附加到一個id,並且id顯然可以只有一個元素。

<script> 
    $('#editor').live('keyup',function() { 
     var value = $(this).html(); 
     $('#desc').attr("value",value); 
    }).keyup(); 
</script> 

這隻適用於元素的一個實例。如果你打算使用多個元素,那麼你需要以另一種方式識別它們。我可以給你一個基於類的建議,但是你需要調整由javascript執行的動作,具體取決於它應該做什麼。

添加類標識符的元素

<?php echo $this->element('editortoolbar'); ?> 
<?php echo $this->Form->label('Your Description');?> 
    <!-- here, add the class --> 
    <div class="editorclass" contenteditable=true></div> 
</div> 

並更改腳本像

<script> 
    $('.editorclass').live('keyup',function() { 
     var value = $(this).html(); 
     $('#desc').attr("value",value); 
    }).keyup(); 
</script> 

現在,你有一個#desc引用,也是行不通的,因爲它是由引用ID。所以你可以通過做同樣的事情來做到這一點,改變類的ID,但你需要找到一種方法來將編輯器類與該描述保持在一起。我通常爲這種情況做的事是計數具有相同類的元素,標識被引用的元素的索引,並修改具有相同索引的其他類(在本例中爲描述)。在你的情況下,它會類似於

<script> 
    $('.editorclass').live('keyup',function() { 
     var value = $(this).html(); 
     $('.descclass').eq($('.editorclass').index($(this))).attr("value",value); 
    }).keyup(); 
</script> 

但我沒有測試,所以你需要調整該功能。哦,你將需要改變這一部分也

<?php echo $this->Form->hidden('description',array('class'=>'descclass'));?> 
相關問題