Yii Framework Forum: Attribuire Jquery Ad Un Oggetto Button - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

Attribuire Jquery Ad Un Oggetto Button Rate Topic: -----

#1 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 11 October 2012 - 04:23 AM

Salve ragazzi , ho inserito un button e volevo applicarli al click un'evento e quindi ho fatto cosi:

echo CHtml::button('Aggiungi prodotto',array(
                                                             'js:function(){
                                                                 $(this).click(function () {
                                                                   alert("ciao");
                                                                   
                                                                 })
                                                                 }'
               ));


ma il problema e che non fa niente :o :o :o
0

#2 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 11 October 2012 - 04:32 AM

<?php echo CHtml::button('Aggiungi prodotto',array('onclick'=>'alert("ciao");'));?>

0

#3 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 11 October 2012 - 04:36 AM

emafer ti ha risposto gia', comunque considera che this in jquery ha senso in funzioni chiamate su qualche oggetto, per esempio:

<?php echo CHtml::button('Aggiungi prodotto',array('onclick'=>'function(){console.log(this)}'));?>


Se ti serve riferirti a qualcosa devi dargli una classe o un id, tipo:

$('a.link_class').click(function(e){});

0

#4 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 11 October 2012 - 05:02 AM

grazie emafar ,

il problema si fa più intrigante vorrei generare questo che ha id Prodotto_nome_prodotto_select ovvero:

<?php echo $form->labelEx($model_prodotto,'id_prodotto'); ?>
            <div id="sel_prodotto">
                   <?php $form->widget('ext.combobox.EJuiComboBox', array(
                     'model' => $model_prodotto,
                     'attribute' => 'nome_prodotto',
                     // data to populate the select. Must be an array.
                     'data' => ProdottoController::lista_pro_combobox(),
                     // options passed to plugin
                     'options' => array(
                        // JS code to execute on 'select' event, the selected item is
                        // available through the 'item' variable.
                        'onSelect' => '',
                        // JS code to be executed on 'change' event, the input is available
                        // through the '$(this)' variable.
                        'onChange' => '',
                        // If false, field value must be present in the select.
                        // Defaults to true.
                        'allowText' => TRUE,
                    ),
                    // Options passed to the text input
                    'htmlOptions' => array('size' => 10),
                ));
               ?>           
               <?php echo $form->error($model,'nome_prodotto'); ?>
           </div>



<?php echo CHtml::button('Aggiungi prodotto',array('onclick'=>' $("#prodotto").append($("#sel_prodotto").html());
                                                                               $(this).attr("name","prova");'                                                                 
                                                                  )); ?>


Mi crea la select ma no mi attiva il widget ovvero non mi fa scorrere gli elementi al suo interno... Il problema sta nel tag name , ho provato a cambiarlo con $(this).attr("name","prova");' ma non cambia :(
0

#5 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 11 October 2012 - 05:40 AM

bè, quando clicchi il bottone tu ordini due cose:
1 aggiungi il div con il widget(#sel_prodotto) al div prodotto.
- e questo mi pare lo faccia
2 setti al bottone (this) un attributo di nome 'name' con valore 'prova'.

Quindi non capisco: Cosa non viene settato di precisione?
E perché hai bisogno di settare l'attributo name del button?

Se per esempio dovessi aggiungere il prodotto alla lista, dovresti dire: questo botton ha un id=idprodotto, se lo clicco aggiungo id_prodotto alla lista dei prodotti ordinati.
0

#6 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 11 October 2012 - 05:52 AM

il problema sta nel fatto che voglio cambiare id (mi ero espresso male prima) solo al secondo widget altrimenti non funziona vanno in conflitto ... il this non era al bottone ma pensavo facesse riferimento all'ultimo elemento creato sorry
0

#7 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 11 October 2012 - 11:38 AM

View Postmichele, on 11 October 2012 - 05:52 AM, said:

il problema sta nel fatto che voglio cambiare id (mi ero espresso male prima) solo al secondo widget altrimenti non funziona vanno in conflitto ... il this non era al bottone ma pensavo facesse riferimento all'ultimo elemento creato sorry

Bè potresti dire al widget dentro a sel_prodotto, tramite html_option che il suo id è pincopalla.
 'htmlOptions' => array('size' => 10,'id'=>'pincopalla'),

e poi potresti usare jquery per modificare il valore di quell'input text (#pincopalla).val(etcetc)...
<?php echo CHtml::button('Aggiungi prodotto',array('id'=>'id_prodotto_da_aggiungere,'onclick'=>' $("#prodotto").append($("#sel_prodotto").html());
                                                                               $("#pincopalla").val($(this).id);'                                                                 
                                                                  )); ?>

Se ho capito cosa intendi...
0

#8 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 12 October 2012 - 02:37 AM

emafar il problema è questo se due widget hanno id o name uguali il secondo non funziona.

primo widget:

'htmlOptions' => array('size' => 10,'id'=>'lista_prodotti'),


Quindi vorrei al momento del:

'onclick'=>' $("#prodotto").append($("#sel_prodotto").html());'  


vorrei attribuire al nuovo oggetto un nuovo id ad esempio 'id'=>'lista_prodotti_2'
1

#9 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 12 October 2012 - 03:35 AM

Per esempio potresti dare un id fisso al secondo widget,
quando clicchi il bottone puoi fissare l'id del secondo widget come vuoi tu
$("#sceondo_widget").attr('id','sasfasf');
dovrebbe andare ;)
0

#10 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 12 October 2012 - 03:55 AM

il secondo widget ha come id quello del primo quindi se faccio questo:

$("#sceondo_widget").attr('id','sasfasf');


me li cambia a tutti e due... Sto impazzendo
0

#11 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 12 October 2012 - 04:30 AM

View Postmichele, on 12 October 2012 - 03:55 AM, said:

il secondo widget ha come id quello del primo quindi se faccio questo:

$("#sceondo_widget").attr('id','sasfasf');


me li cambia a tutti e due... Sto impazzendo


Pett: tu hai un div con id "selprodotto" al cui interno hai un widget da inserire, con attributo disabilitato per evitare che ti venga passato dal form. Lo metti e con jquery te lo tieni nascosto in fondo alla pagina.
Quando clicchi sul botton cloni il div col widget,lo appendi, gli cambi id e lo rendi visibile e lo abiliti (rimuovendo l'attributo disabled

In questo modo tu hai sempre in fondo un div pronto da inserire in fondo.
0

#12 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 12 October 2012 - 04:39 AM

scusami emafer non ho capito :(
0

#13 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 12 October 2012 - 05:22 AM

Colpa mia

1) nella tua view includi il div con il widget a fondo pagina, ha due particolarità:
a) ha un id fissato da te (ae id_da_cambiare)
B) è disabilitato
<div id="sel_prodotto">
                   <?php $form->widget('ext.combobox.EJuiComboBox', array(
                     'model' => $model_prodotto,
                     'attribute' => 'nome_prodotto',
                     // data to populate the select. Must be an array.
                     'data' => ProdottoController::lista_pro_combobox(),
                     // options passed to plugin
                     'options' => array(
                        // JS code to execute on 'select' event, the selected item is
                        // available through the 'item' variable.
                        'onSelect' => '',
                        // JS code to be executed on 'change' event, the input is available
                        // through the '$(this)' variable.
                        'onChange' => '',
                        // If false, field value must be present in the select.
                        // Defaults to true.
                        'allowText' => TRUE,
                    ),
                    // Options passed to the text input
                    'htmlOptions' => array(
'size' => 10
,'id'=> 'id_da_cambiare'
,'disabled'=>'disabled'
),
                ));
               ?>   

Setti intanto uno script di jquery in cui imposti a invisibile di default il div inserito, e fissi un contatore.
Yii::app()->clientScript->registerScript('
$count_widget=0;
$("#sel_prodotto").hide();
')

Quando clicchi sul button poi fai così:
'onclick'=>' aggiungiwidget();'  


$script='function aggiungiwidget(){
//clono il widget
$nuovwidget=$("id_da_cambiare").clone();
$nuovowidget.attr("id","agg_prodotto_"+$count_widget);
//aumento il counter
$count_widget=$count_widget+1;
//lo aggiungi
$("#prodotto").append($nuovowidget);
$nuovowidget.show();
}';
Yii::app()->clientScript->registerScript($script);


potrebbe funzionare ;)
0

#14 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 12 October 2012 - 06:32 AM

mi da errore:

Missing argument 2 for CClientScript::registerScript()


su

Yii::app()->clientScript->registerScript($script);

0

#15 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 12 October 2012 - 07:04 AM

View Postmichele, on 12 October 2012 - 06:32 AM, said:

mi da errore:

Missing argument 2 for CClientScript::registerScript()


su

Yii::app()->clientScript->registerScript($script);



Scusa
Yii::app()->clientScript->registerScript('id_script',$script);

0

#16 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 12 October 2012 - 07:24 AM

niente

ReferenceError: aggiungiwidget is not defined

0

#17 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 12 October 2012 - 07:35 AM

ok risolto questo problema:

<?php Yii::app()->clientScript->registerScript('hide_div','
count_widget=0;
$("#sel_prodotto").hide();
',  CClientScript::POS_HEAD);

$script='function aggiungiwidget(){
//clono il widget
nuovwidget=$("#id_da_cambiare").clone();
nuovowidget.attr("id","agg_prodotto_"+count_widget);
//aumento il counter
count_widget=count_widget+1;
//lo aggiungi
("#prodotto").append(nuovowidget);
nuovowidget.show();
}';
Yii::app()->clientScript->registerScript('aggiungiwidget',$script,  CClientScript::POS_HEAD);
?>


ma mi da errore:
ReferenceError: nuovowidget is not defined
0

#18 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 12 October 2012 - 09:23 AM

io ho scritto il codice di fretta, direttamente qui, quindi va controllato: ad esempio il problema che mi riporti è che la prima volta ho scritto nuovwidget, senza o
0

#19 User is offline   michele 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 221
  • Joined: 02-August 12

Posted 15 October 2012 - 03:45 AM

emafer ancora niente ora stessa identica cosa di prima ovvero mi crea il pulsante ma non funziona.

Nelle figure è illustrato il prima ed il dopo evento...

Attached File(s)

  • Attached File  1.png (1.16K)
    Number of downloads: 1
  • Attached File  2.png (1.47K)
    Number of downloads: 1

0

#20 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 15 October 2012 - 05:43 AM

eccomi qui
innanzi tutto bisogna dire che l'id del combo è id_da_cambiare_select, e quindi dobbiamo tenerne conto ;)
scoperto questo ho scoperto che se metto la funzione nel renderScript, a me, non la legge.
pertanto:
<script>$("#sel_prodotto").hide();
    $count_widget=0;
    function aggiungiwidget(){
$nuovowidget=$("#id_da_cambiare_select").clone();
$nuovowidget.attr("id","agg_prodotto_"+$count_widget);
$count_widget=$count_widget+1;
$("#prodotto").append($nuovowidget);
}
    </script>
<?php      
echo CHtml::button('Aggiungi prodotto',
        array('id'=>'id_prodotto_da_aggiungere','onclick'=>'aggiungiwidget();'                                                                 
                                                                  )); ?>


Questo mi funziona, mi aggiunge nel div prodotto la select, attribuendogli un id che aumenta dinamicamente.

Ps: volendo puoi selezionare anche un valore del select passandoglielo con il button, in questo modo:
<script>$("#sel_prodotto").hide();
    $count_widget=0;
    function aggiungiwidget(valore){
$nuovowidget=$("#id_da_cambiare_select").clone();
$nuovowidget.attr("id","agg_prodotto_"+$count_widget);
$nuovowidget.val(valore)
$count_widget=$count_widget+1;
$("#prodotto").append($nuovowidget);
}
    </script>
<?php      
echo CHtml::button('Aggiungi prodotto',
        array('id'=>'id_prodotto_da_aggiungere','onclick'=>'aggiungiwidget("1");'                                                                 
                                                                  )); ?>

0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users