2016-05-19 6 views
0

Hallo Ich habe 2 Dropdown-Formulare auswählen.Zwei gleiche Formen funktioniert anders in jQuery

= f.grouped_collection_select :skill_of_objects, SkillSphere.where(name: any_skill_types(school_skill.skill_emphasis)).order(:name), :skills, :name, :id, :name_pl, {}, { class: 'add_skill_form close_me'} 

= f.grouped_collection_select :skill_of_objects, SkillSphere.order(:name), :skills, :name, :id, :name_pl, {}, { class: 'add_skill_form'} 

Und ein Coffeescript Aktion mit ihnen verbunden:

$(document).on 'change', '.add_skill_form', -> 
    multi_skill = ['Wiedza','Rzemiosło','Artysta','Pokaz'] 
    skill_name = $('#character_skill_of_objects option:selected').text().replace(/ /g,"_") 
    if $(this).hasClass('close_me') 
    close_status = 'true' 
    else 
    close_status = 'false' 
    if $(document).find('#skill_' + skill_name).length == 0 or skill_name in multi_skill 
    $.ajax 
     url: 'on_add_skill' 
     type: 'GET' 
     dataType: 'script' 
     data: { 
     skill_id: $('#character_skill_of_objects option:selected').val(), 
     close_me: close_status 
     } 
    else 
    alert 'Skill exist' 

Das Komische ist, dass die Form, die in der dom obere ist wie erwartet funktioniert, und die zweite Allways return „Geschick existieren“, außer für Situationen, in denen es als erstes verwendet wird, und es nur einmal funktioniert, wenn danach immer "skill exist" alert zurückgegeben wird.

ich wil für jeden Hinweis freuen, was falsch :)

Antwort

0

Das Problem ist, war, dass ich auf die ID eines Elements wurde beziehe. Also beide Formen, wo das selbe ausgewählte Feld verwendet wird. Die Lösung verwendete "this" für das ausgewählte Feld.

$(document).on 'change', '.add_skill_form', -> 
    multi_skill = ['Wiedza','Rzemiosło','Artysta','Pokaz'] 
    skill_name = $('option:selected',this).text().replace(/ /g,"_") 
    if $(this).hasClass('close_me') 
     close_status = 'true' 
    else 
     close_status = 'false' 
    $.ajax 
      url: 'on_add_skill' 
      type: 'GET' 
      dataType: 'script' 
      data: { 
      skill_id: $('option:selected',this).val(), 
      close_me: close_status 
      }