OnClick事件不在下拉选项中工作

时间:2015-03-11 07:49:18

标签: jquery html codeigniter

我有下拉列表,当我选择选项时,它将从数据库中检索值并显示在文本字段上。所以我做了Click功能。它在 Firefox 中工作但在谷歌浏览器中无效。

HTML:

   <select id="classi" name="classi">
    <option value="1" onclick="chagePack('<?php echo sha1('month11')?>',1,10);">1 months</option>
    <option value="2" onclick="chagePack('<?php echo sha1('month23')?>',3,20);">3 months</option>
    <option value="3" onclick="chagePack('<?php echo sha1('month36')?>',6,30);">6 months</option>
   </select>

使用Javascript:

function chagePack(pack,month,type)
{
 alert("test");
 $.post("change_membership_page",
 {
    pack: pack, month: month, type:type
 },
 function(data, status){
     $("[id='replace-month-pack']").html(data); 
    //alert("Data: " + data + "\nStatus: " + status);
 }); 
}

4 个答案:

答案 0 :(得分:1)

您错过了一个引号'标记。

而不是这个

  <option value="1" onclick="chagePack('1,1,10);">1 months</option>

使用此

<option value="1" onclick="chagePack('1,1,10');">1 months</option>

您的整体代码应如下所示

&#13;
&#13;
function chagePack(pack,month,type)
{
 alert("test");
 $.post("change_membership_page",
 {
    pack: pack, month: month, type:type
 },
 function(data, status){
     $("[id='replace-month-pack']").html(data); 
    //alert("Data: " + data + "\nStatus: " + status);
 }); 
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="classi" name="classi">
    <option value="1" onclick="chagePack('1,1,10');">1 months</option>
    <option value="2" onclick="chagePack('2,3,20');">1 months</option>
    <option value="3" onclick="chagePack('3,6,30');">1 months</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

select元素上侦听点击事件被认为是一种不好的做法。你无法使用键盘。

而是使用适用于所有地方的change事件。您可以稍微更改一下您的功能,但仍然可以访问option所拥有的数据。

HTML:

<select id="classi" name="classi">
    <option value="1" data-params="1,1,10">1 months</option>
    <option value="2" data-params="2,3,20">1 months</option>
    <option value="3" data-params="3,6,30">1 months</option>
</select>

JS:

$("#classi").on('change', function(){
    var params = $(this).children(':selected').data('params');
    alert(params);
});

在线:http://jsfiddle.net/haytzsr8/

答案 2 :(得分:1)

您应该使用onChange事件代替onClick

OnClick不是SELECT代码的标准事件。

答案 3 :(得分:1)

      Worked 
       <select id="classical" name="classical" >
         <option value="1" data-params="<?php echo sha1('month11')?>,1,1">1 months</option>
         <option value="2" data-params="<?php echo sha1('month31')?>,3,2">3 months</option>
         <option value="3" data-params="<?php echo sha1('month61')?>,6,3">6 months</option>
      </select>



     $("#classical").on('change', function(){
        var params = $(this).children(':selected').data('params');
        var val = params.split(',');
        chagePack(val[0],val[1],val[2]);
     }); 

   function chagePack(pack,month,type)
   {
       $.post("change_membership_page",
       {
          pack: pack, month: month, type:type
       },
       function(data, status){
          $("[id='replace-month-pack']").html(data); 
       });  
    }