2013-03-13 3 views
1

저는 사용자 지정 Wordpress 위젯에 문제가 있습니다. 이상한 이유로 양식 기능이 두 번 실행되어 두 개의 Redactor 텍스트 영역을 만들지 만 사이드 바에 위젯을 추가 할 때만 문제가 발생합니다. 추가 된 후에 저장 버튼을 클릭하지 않습니다.Wordpress 위젯 양식 기능이 두 번 실행됩니다.

어떻게하면 내 양식 기능이 한 번만 실행되거나 JavaScript가 한 번만 실행되도록 할 수 있습니까?

전체 위젯 코드

http://pastebin.com/BHDJSxWX

내 양식 기능 나는 몇 가지 무슨 일이있는 것 같다 것은 테스트

function form($instance) 
{ 
    $instance = wp_parse_args((array) $instance, array('box1' => '', 'box2' => '', 'box3' => '', 'box4' => '')); 
    $box1 = $instance['box1']; 
    $box2 = $instance['box2']; 
    $box3 = $instance['box3']; 
    $box4 = $instance['box4']; 
    $boxqty = $instance['boxqty']; 


    $uniqueID = rand(); 
    echo "Unique ID: ".$uniqueID; 

    ?>   
    <p> 
     <label for="<?php echo $this->get_field_id('boxqty'); ?>">Number of blocks: (1-4) 
      <input class="widefat" id="<?php echo $this->get_field_id('boxqty'); ?>" name="<?php echo $this->get_field_name('boxqty'); ?>" type="text" value="<?php echo attribute_escape($boxqty); ?>" /> 
     </label> 
    </p> 
    <p> 
     <label for="<?php echo $this->get_field_id('box1'); ?>">Box 1: 
      <textarea class="widefat redactor_content_<?php echo $uniqueID; ?>" id="box1" name="<?php echo $this->get_field_name('box1'); ?>" style="width: 600px;"><?php echo $box1; ?></textarea> 
     </label> 
    </p> 
    <p> 
     <label for="<?php echo $this->get_field_id('box2'); ?>">Box 2: 
      <textarea class="widefat redactor_content_<?php echo $uniqueID; ?>" id="<?php echo $this->get_field_id('box2'); ?>" name="<?php echo $this->get_field_name('box2'); ?>" style="width: 600px;"><?php echo $box2; ?></textarea> 
     </label> 
    </p> 
    <p> 
     <label for="<?php echo $this->get_field_id('box3'); ?>">Box 3: 
      <textarea class="widefat redactor_content_<?php echo $uniqueID; ?>" id="<?php echo $this->get_field_id('box3'); ?>" name="<?php echo $this->get_field_name('box3'); ?>" style="width: 600px;"><?php echo $box3; ?></textarea> 
     </label> 
    </p> 
    <p> 
     <label for="<?php echo $this->get_field_id('box4'); ?>">Box 4: 
      <textarea class="widefat redactor_content_<?php echo $uniqueID; ?>" id="<?php echo $this->get_field_id('box4'); ?>" name="<?php echo $this->get_field_name('box4'); ?>" style="width: 600px;"><?php echo $box4; ?></textarea> 
     </label> 
    </p> 
    <!--Activate Redactor--> 
    <script type="text/javascript"> 

       jQuery('.redactor_content_<?php echo $uniqueID; ?>').redactor({ 
        fixed: true 
       }); 
      console.log('Unique ID: <?php echo $uniqueID; ?>'); 
    </script> 
    <?php 
} 
+0

"적어도 JavaScript를 한 번 실행하십시오."- 문제는 자바가'form' 함수 자체가 아니라 두 번 실행된다는 것입니다. –

+0

나는 폼 함수가 실제로 두 번 실행되는 PHP 코드로 testet를 가지고있다. – dasmikko

답변

0

그 왼쪽에 전체 위젯로드 모두 위젯 양식 내용이 숨겨져 있고 '활성'위젯 섹션의 오른쪽에 있습니다. 테스트되지 않은,하지만 당신은 단지와 함께 '활성'섹션을 대상으로 할 수 있어야한다 :

jQuery('.widgets-holder-wrap .redactor_content_<?php echo $uniqueID; ?>').redactor({ 
    fixed: true 
}); 

나는 다른 무언가를 발견 할 수있을 완전한 위젯이 있다면.

+0

전체 코드에 대한 링크 추가 – dasmikko

관련 문제