2013-07-03 3 views
-1

Когда [name="tip"] имеет первое значение, отобразите определенный элемент, иначе он отобразит другой элемент.jquery change не работает

Оба элемента имеют свойство display:none. Когда я загружаю страницу, я проверяю значение выбора и автоматически затухает в нужном элементе.

Все работает нормально, за исключением случаев, когда я пытаюсь изменить выбранный вариант: ничего не происходит. Я добавил оба javascript onchange к этому пункту и jQuery .change(), и ничего не происходит. Можешь мне сказать почему?

<form id="fm-account-properties-tab" method="POST"> 
<table width="300px" style="margin-top:10px;" align="center" > 

    <tr> 

     <td align="left"> 
     <select class="easyui-combobox" name="tip" style="width:200px;" class="easyui-validatebox" required="true" onchange="changeType();"> 
        <option value="l1">l1</option> 
        <option value="l2">l2</option> 
        <script> 
         $(document).ready(function(){ 
          $('[name="tip"]').val('<?php echo $a['tip'];?>'); 
         }); 
        </script> 
     </select> 
     </td> 
    </tr> 
    <tr id="l1" style="display:none"> 

     <td align="left"> 
     <select class="easyui-combobox" name="l1" style="width:200px;" class="easyui-validatebox" required="true"> 

     </select> 
     </td> 
    </tr> 
    <tr id="l2" style="display:none"> 

     <td align="left"> 
     <select class="easyui-combobox" name="l2" style="width:200px;" class="easyui-validatebox"> 


     </select> 
     </td> 
    </tr> 
</table> 
</form> 

<script> 
function changeType() 
{ 

if($('[name="tip"]').val()=='l1') 
    { 
    $('#l1').fadeIn(); 
    $('#l2').hide(); 
    } 
else 
    { 
    $('#l2').fadeIn(); 
    $('#l1').hide(); 
    } 
} 



$(document).ready(function() { 

     changeType(); 

      $('[name="tip"]').change(function(){ alert('1');});//it never alerts me 
    }); 

+0

Как вы объявите ваш 'DOCTYPE'? Несмотря на то, что это не связано напрямую с вашей проблемой, атрибуты 'id', начинающиеся с номеров, ** не ** действительны в HTML4. Тем не менее, они находятся в HTML5. –

+0

Сколько элементов существует с именем 'tip'? Вопросов, заданных этим вопросом, слишком много ... – BenM

+0

его не о id. Я отправил здесь числовой идентификатор, tho они строки –

ответ

0

использование .on для более новых версий JQuery (JQuery> 1.7.x reference)

function changeType() { 
    if ($('[name="tip"]').val() == '___') { 
     $('#1').fadeIn(); 
     $('#2').hide(); 
    } else { 
     $('#2').fadeIn(); 
     $('#1').hide(); 
    } 
} 

$(document).ready(function() { 
    changeType(); 
    $('select[name="tip"]').on('change', function() { 
     changeType(); 
    }); 
}); 

у вас есть атрибут двойного класса на ваш выбор.

здесь рабочий образец http://jsfiddle.net/tvhKH/

+0

б/у ...но ничего не произошло: P опубликует html слишком –

+0

добавил html, надеюсь, что сейчас лучше –

+0

добавил рабочий пример jsfiddle –

0

Может быть, вы должны использовать js error event, чтобы выяснить ошибку в этом коде. Например, <script> try {....all your codes here...} catch(err) {alert("THE ERRor" + err.message);} </script>. Этот код предупредит вашу ошибку и точную точку. Удачи!

0

Во-первых, вы должны попытаться добавить

console.log("It works"); 

или в

alert("It works") 

в вашем методе, чтобы вы знаете, если это actualy называется.

Тогда я думаю, что проблема может исходить от FadeIn() работает только с элементами css {display: none} и видимостью, отличной от «скрытой», так что вы уверены, что ваши элементы? При возникновении сомнений, вы можете заменить

.fadeIn(); 

по

.css('visibility','visible').hide().fadeIn(); // hide() does the same as display: none 

Тогда, пожалуйста, дайте мне знать, если у вас есть больше информации после делать это.

+0

кажется, что он никогда не достигает $ ('[name = "tip"]'). Change (function (e) { alert ("It works"); }); там ... я никогда не получаю это предупреждение, поэтому я сказал, что речь идет о методе изменения –

+0

: вы используете jquery 1.7 или новее? –

+0

Я использую jquery 1.8 –

Смежные вопросы