2017-10-21 61 views
0

Iam嘗試創建一個按鈕,該按鈕在用戶單擊它時顯示一個表單。我已經嘗試檢查我的代碼,並且我沒有發現任何錯誤,但該按鈕不起作用。請幫忙!Javascript嘗試在Ruby中隱藏和顯示錶單時不工作

//load turbo scripts 
 

 
document.addEventListener('turbolinks:load', function() { 
 
    //assign elements in to variables 
 
    const openProjectButton = document.getElementById('new-project-button') 
 
    const projectPopover = document.getElementById('new-project-popover') 
 

 

 
    //check if elements exist 
 

 
    if (openProjectButton && projectPopover) { 
 
    //attach listener 
 
    openProjectButton.addEventListener('click', function() { 
 
     //if the popover class contains is-hidden remove it else return nill. 
 
     return projectPopover.classList.contains('is-hidden') ? projectPopover.classList.remove('is-hidden') : null 
 
    }, false) 
 

 
    //attach listener to cancel button 
 

 
    const cancelProjectpopover = document.getElementById('cancel-project-popover') 
 
    cancelProjectpopover.addEventListener('click', function() { 
 
     //add back is-hidden 
 
     return projectPopover.classList.add('is-hidden') 
 
    }, false) 
 
    } 
 
})
<div class="col-md-1 mr-auto"> 
 
    <button id="new-project-button" class="btn btn-primary mr-auto">New</button> 
 
    <div id="new-project-popover" class="project-popover is-hidden"> 
 
    <div class="form-group"> 
 
     <input type="text" placeholder="Name this project" class="form-control"> 
 
    </div> 
 
    <button type="submit" class="btn btn-success">Save</button> 
 
    <button id="cancel-project-popover" class="btn btn-secondary">Cancel</button> 
 
    </div> 
 
</div>

回答

0

你確定外部事件'turbolinks:load'在所有解僱?因爲當我刪除該事件偵聽器,一切正常,因爲它應該:

//assign elements in to variables 
 
const openProjectButton = document.getElementById('new-project-button') 
 
const projectPopover = document.getElementById('new-project-popover') 
 

 

 
//check if elements exist 
 

 
if (openProjectButton && projectPopover) { 
 
    //attach listener 
 
    openProjectButton.addEventListener('click', function() { 
 
    //if the popover class contains is-hidden remove it else return nill. 
 
    return projectPopover.classList.contains('is-hidden') ? projectPopover.classList.remove('is-hidden') : null 
 
    }, false) 
 

 
    //attach listener to cancel button 
 

 
    const cancelProjectpopover = document.getElementById('cancel-project-popover') 
 
    cancelProjectpopover.addEventListener('click', function() { 
 
    //add back is-hidden 
 
    return projectPopover.classList.add('is-hidden') 
 
    }, false) 
 
}
.is-hidden { 
 
    display: none; 
 
}
<div class="col-md-1 mr-auto"> 
 
    <button id="new-project-button" class="btn btn-primary mr-auto">New</button> 
 
    <div id="new-project-popover" class="project-popover is-hidden"> 
 
    <div class="form-group"> 
 
     <input type="text" placeholder="Name this project" class="form-control"> 
 
    </div> 
 
    <button type="submit" class="btn btn-success">Save</button> 
 
    <button id="cancel-project-popover" class="btn btn-secondary">Cancel</button> 
 
    </div> 
 
</div>

+0

到底如何做呢。我已經安裝了gem,並將它需要在我的application.js文件中 – ian

+0

您可以嘗試使用事件'page:load'嗎?我在這裏猜測,因爲我沒有turbolinks的經驗,只是解析文檔 –