Jump to content
php.lv forumi

jquery checkbox event


renathy

Recommended Posts

Neizdodas checkbx grupai ar doto name piesaistīt eventu onclick (uz checkbox klikšķa kaut ko skatāmies, t.i., kaut vai -ja tas ir checkted, tad alert-ojam).

 

(document).ready(function() { 		
$(':checkbox[name="chb_parameters[]"]')...???

 

Mēģināju each ciklu, bet nesanāk.

Edited by renathy
Link to comment
Share on other sites

HTML

<input type="checkbox" class="chekboksis" name="chb_parameters[]" value="Test1" />
<input type="checkbox" class="chekboksis" name="chb_parameters[]" value="Test2" />
<input type="checkbox" class="chekboksis" name="chb_parameters[]" value="Test3" />
<input type="checkbox" class="chekboksis" name="chb_parameters[]" value="Test4" />

 

JS

jQuery('.chekboksis').click(function() {
 alert(jQuery(this).val());
});

Edited by rATRIJS
Link to comment
Share on other sites

Tagad it kā strādā. Bet radās problēma: sākumā viss ir normāli, bet tad nospiežot kaut ko tiek izsaukts Ajax pieprasījums, kas pārģenerē checkboxus. Un pārģenerētiem checkboxiem vairs nav eventu.

 

Man Ajax izsauc failu teiksim test.php, kas uzģenerē html-u ar vajadzīgiem checkboxiem, bet eventus nekur nepieliek.

 

Kā būtu pareizi darīt?

Link to comment
Share on other sites

Ok, paldies. Uzreiz visas problēmas atrisinātas :)

 

 

Lai gan ne visas - līdzīga problēma ir sekojoša.

 

Ir divi selecti un divs:

 

<select name="select1"> ...

<select name="select2"> ...

<div id="data">...

 

Mainot select2 vērtības, izsaucam ajaxu, kas izmaina diva saturu. Tas strādā:

$("#formid select[name=select2] change(function(){
	$.get("ajax_test.php", {id: $(this).val()}, 
		function(data){						
				$("#data)html(data);					
	  });
});		

 

Mainot select1 vērtības, izsaucam ajaxu, kas izmaina select2 option vērtības. Tas ari strādā:

$("#form_id select[name=select1]").change(function(){
	$.get("ajax_boards.php", {brd: $(this).val()}, 			
		function(data){						
			$("#form_id select[name=select2].html(data);	
	  });
});	

 

Bet problēma ir tā, ka mainot select1 vērtības, mainās select2 vērtības un būtu automātiski jānomainās ari div-a vērtībām, bet šajā gadījumā, change events nenostrādā.

Edited by renathy
Link to comment
Share on other sites

Strādā, bet jaunas problēmas.

 

Ir checkboxi, kuriem ir klase "param_checkboxes" un katram checkboxim blakus ir editbox vai selects.

Spiežot uz checkboxi attiecīgi editbox/selects kļūst enabled/disabled.

Gandrīz darbojas...

 

Ir kods, kas veic augstākminēto:

$('.param_checkboxes').live('click', function() {
	alert(jQuery(this).val())

	var name = 'par_' + $(this).val();
	var elm = $('#filter_form *[name="'+name+'"]');
	if($(this).is(':checked'))
	{					
		elm.removeAttr("disabled");
	}
	else
	{
		elm.attr("disabled", "disabled");			 
	}		
});

 

Viss strādāja. Bet tad ir nepieciešams ielādējot lapu aizpildīt dažus checkboxus.

 

Tad aiz katra checkbox-a, kurš ir "checked", tiek uzģenerēts kaut kāds tāds kods (kura mērķis izsaukt click eventu):

 

<input type="checkbox" id="chb_1" class="param_checkboxes" ...>
<input type="text" id="1" name="par_1" ...

<script type="text/javascript">jQuery($('#chb_1')).click();</script>

 

Idejiski ielādējot lapu, ielādējot katru checkboxi gribu izsaukt chekcboxim on click eventu, bet šajā gadījumā nenostrādā.

Link to comment
Share on other sites

Dubultošanās tiešām bija, bet tas diemžēl nepalīdzēja...

Click events netiek uzsākts pie labas ielādes.

 

Šeit var redzēt, ka netiek izsaukts tas clicks pie lapas ielādes...

 

<html>
<head>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script>
$(document).ready(function() { 	
$('#chb_1').live('click', function() {
	alert(jQuery(this).val())

});	


}); 
</script>
</head>
<body>
<input type="checkbox" id="chb_1" value="1" name="chb_parameters[]" class="param_checkboxes">
<script type="text/javascript">$('#chb_1').trigger('click');</script>
</body>
</html>

Edited by renathy
Link to comment
Share on other sites

Respektīvi

<script type="text/javascript">$('#chb_1').trigger('click');</script>

 

nenostrādā, jo vēl nav izveidots viss DOM un tad arī tas "live/click" nav piesaistīts?

 

 

Hmm, mēģināšu.

Vienkārši "kaut kur uz dullo" bija vieglāk, jo man ne jau visiem checkboxiem jābūt ieķeksētiem, bet tikai kaut kādiem un to nosaka Smarty padotie parametri. Šos Smarty parametrus es apstrādāju ciklā un ja izpildās nosacījumi, tad attiecigo checkboxi ieķeksēju un gribu viņam izsaukt "check-eventu":

 

{foreach from=$catParameters key=k item=param}
<input class="param_checkboxes" name="chb_parameters[]" value="{$param.id}" id="chb_{$param.id}" type="checkbox"/>
...

{if $param.value neq ''}
   <script type="text/javascript">$('#chb_1').trigger('click');</script>
{/if}	

{/foreach}

 

Tad laikam man kaut kur citur jāapstrādā Smarty vēlreiz un jāmēģina saveidot attiecīgie "click-i" tikai dažiem checkboxiem... ?

Edited by renathy
Link to comment
Share on other sites

Ieliec atsevišķā funkcijā to, ko grib darīt

$.fn.doThis = function(){
return $(this).each(function(){ 
	// te
	alert(this.value); 
});
};
$(function(){
// pieliek live uz vajadzīgajiem checkboxiem
$('input:checkbox')
	.live('click', $.fn.doThis);
// palaižam uz ieķeksētajiem
$('input:checkbox:checked').doThis();
});

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...