2016-03-23 26 views
0

Bir modülün içindeki bir formun nasıl referans gösterileceğini anlamaya çalışıyorum.Bir modülün içinden belirli bir form öğesine başvurma

modül şuna benzer:

const UserShows = (function(){ 

    const saveShowToDashboard = function(evt) { 
    evt.preventDefault(); 
    const $saveShowForm = $(this); 
    setTimeout(function() { 
     $saveShowForm.children('.save-show-btn').val('Saved'); 
    }, 500); 
    const showInfo = $(this).children('.save-show-checkbox').val(); 
    const parsedShowInfo = JSON.parse(showInfo); 
    const _csrf = $(this).children('.csrf').val(); 
    const artistName = parsedShowInfo.artist; 
    const data = { 
     showInfo: parsedShowInfo, 
     _csrf: _csrf, 
    }; 
    console.log(data); 
    $.post('/artists/' + artistName, data, function(res) { 
     if (res === '/login') { 
     window.location = res; 
     }else{ 
     console.log(res); 
     } 
    }); 
    }; 

    return { 
    callSaveShowToDashboard: function(evt){ 
     return saveShowToDashboard(evt); 
    } 
    } 

})(); 

// Call saveShowToDashboard on click 
$('.save-show').on('submit', UserShows.callSaveShowToDashboard); 
I having Gönderdiğim ediliyor belirli kaydet-show forma başvurmak için nasıl bilemiyorum ki

(bulunanlar da vardır sayfa, her biri bir sanatçı tur tarihine karşılık gelir).

Bu işlevi UserShows modülünün içine koymaya karar vermeden önce, özel formu başvuruda bulunmak için $ (this) kullanabilirdim, ancak form artık işlevin doğrudan arandığı için, iş.

cevap

0

JQuery ile bir olayı tetikleyen öğeye event.target'u kullanarak başvurabilirsiniz. Bu şekilde kodu yeniden yazarsam, şu şekilde çalışır:

const saveShowToDashboard = function(evt) { 
    evt.preventDefault(); 
    const $saveShowForm = $(event.target); 
    setTimeout(function() { 
     $saveShowForm.children('.save-show-btn').val('Saved'); 
    }, 500); 
    const showInfo = $saveShowForm.children('.save-show-checkbox').val(); 
    const parsedShowInfo = JSON.parse(showInfo); 
    const _csrf = $saveShowForm.children('.csrf').val(); 
    const artistName = parsedShowInfo.artist; 
    const data = { 
     showInfo: parsedShowInfo, 
     _csrf: _csrf, 
    }; 
    console.log(data); 
    $.post('/artists/' + artistName, data, function(res) { 
     if (res === '/login') { 
     window.location = res; 
     }else{ 
     console.log(res); 
     } 
    }); 
    }; 
İlgili konular