2016-11-21 36 views
7

Używam Gem Coocon dla zagnieżdżonych formularzy.Deklaracja globalna zmienna w coffescript

Muszę ukryć pole #end_date_job_portfolio, jeśli zaznaczono .checkBoxCurrentJob. Problem polega na tym, że jQuery nie widzi tagów, jeśli użytkownik nie kliknął dodaj nowy zagnieżdżony formularz, ponieważ te tagi jeszcze nie są w document.

Do tego używam cocoon:after-insert. To mój skrypt:

$(document).ready -> 
    checkbox_date = "" 
    end_date = "" 
    $('.experiences').on 'cocoon:after-insert', -> 
    checkbox_date = $(".checkBoxCurrentJob") 
    end_date = $('#end_date_job_portfolio') 
    console.log(checkbox_date) 



    #show it when the checkbox is clicked 
    сheckbox_date.on 'click', -> 
    console.log("la la la") 
    if checkbox_date.prop('checked') 
     checkbox_date.hide() 
    else 
     checkbox_date.fadeIn() 
    return 

Wyświetla błąd ReferenceError: \u0441heckbox_date is not defined. Jak przekazać wartości checkbox_date i end_date z cocoon:after-insert do zdarzenia click z checkbox_date?

+1

przeczytać komunikat o błędzie bardziej ostrożnie. Wygląda na to, że wpisałeś '\ u0441' (który jest" Cyrilliczną małą literą es "), w którym chcesz wpisać' c'. '\ u0441' wygląda jak' c', ale nie jest nim. –

+2

@muistooshort masz rację, błędna linia to -> 'checkbox_date.on 'kliknij',', zła 'c' jest tam ('\ u0441') – Hydro

Odpowiedz

5

Problemem jest to, że jesteś prawdopodobnie nawiązując do \u{441}heckbox_date (inny identyfikator) zamiast checkbox_date (jak komentował @muistooshort chociaż) na tej linii:

сheckbox_date.on 'click', -> 
^

Ten с ASCII powinien być jeden. c (\u{63} lub \u0063).

Dodatkowo, z poziomu języka ECMAScript (opartego na JavaScript) specyfikacje zalecają stosowanie znormalizowanego formularza C Unicode w kodach źródłowych języka (dla każdej implementacji), co uważam za rozwiązanie tego problemu (nigdy nie pod opieką i nigdy nie robił nic na ten temat), ale opcjonalnie tak.

1

jQuery posiada wsparcie dla rzeczy, które wchodzą i wychodzą:

$(document).ready ->  
    #show it when the checkbox is clicked 
    $(document).on 'click', ".checkBoxCurrentJob", -> 
    console.log("la la la") 
    checkbox_date = $(this) 
    if checkbox_date.prop('checked') 
     checkbox_date.hide() 
    else 
     checkbox_date.fadeIn() 
    return