###前提・実現したいこと
Ajaxで遷移レスなアプリケーションを作成しています
###発生している問題・エラーメッセージ
GUI画面から(#create_survey)メニューボタンを2回押してから
(.add-question)ボタンを押すと「$(document).on('click', '.add-question', function(event)」が2回実行されてしまう
解決策がわかるかたがいらっしゃたらお知恵をお貸しください。よろしくお願いいたします。
###ソースコード
javascript
1 2$('#create_survey').click(function() { 3 4 var loginid = $(':hidden[name="loginId"]').val(), 5 userid = $(':hidden[name="userid"]').val(), 6 taccountid = $(':hidden[name="taccountid"]').val(), 7 page = "create_survey", 8 urlget = "http://localhost/api/survey/create/" + loginid, 9 urlgetq = "http://localhost/api/survey/question/" + loginid, 10 urlpost = "http://localhost/api/survey/create/" + loginid, 11 urlpostq = "http://localhost/api/survey/question/" + loginid, 12 csrfToken = $("meta[name='_csrf']").prop("content"), 13 apiToken = $(':hidden[name="token"]').val(), 14 header = $("meta[name='_csrf_header']").prop("content"); 15 16 $('.content-header, div.row, .col-md-12, .box-info, .box').css( 'display', 'none'); 17 18 $('.content').hide().load('create_survey.html').fadeIn(function() { 19 // init data 20 var surveyId = 0, 21 lastQuestionId = 0, 22 no = 0, 23 val = 0; 24 // init datepicker 25 datepickerConfig(); 26 // get uncompleted survey data 27 getUncompletedSurvey(loginid, apiToken, surveyId); 28 // get uncompeted question data 29 getUncompetedQuestion(loginid, apiToken, lastQuestionId); 30 31 // when click add-question button 32 $(document).on('click', '.add-question', function(event) { 33 if ($('[name=title]').val() === '' || $('[name=target] option:selected').val() === '' || $('[name=period]').val() === '') { 34 swal("「タイトル」「対象」「回答期限」をすべて入力してください","", "error"); 35 } else { 36 $(".survey_border").css("border", "#F3CD33 1px solid"); 37 $(".answer-type").slideDown(); 38 if (surveyId === 0) { 39 var val1 = $('[name=title]').val(), 40 val2 = $('[name=target] option:selected').val(), 41 val3 = $('[name=period]').val(), 42 data = {"tAccountId":taccountid, "tUserId":userid, "id":null, "title":val1, "scope":val2, "period":val3, "completed":0, "enabled":0, "closed":0, "statusLabel":"<span class=\"label label-default\"><i class=\"fa fa-minus-square\"></i> 非公開</span>"}; 43 $.ajax({ 44 type : 'POST', 45 url : urlpost, 46 data : JSON.stringify(data), 47 contentType: 'application/json', 48 dataType : 'JSON', 49 scriptCharset : 'utf-8', 50 timeout: 10000, 51 beforeSend: function(xhr) { 52 xhr.setRequestHeader(header, csrfToken); 53 xhr.setRequestHeader("X-API-TOKEN", apiToken); 54 } 55 }) 56 .done(function(data){ 57 if (data.apiStatus === "error") { 58 swal("送信失敗しました", "お手数ですが不具合報告フォームからご連絡いただくかサポート窓口までお問い合わせください", "error"); 59 } 60 surveyId = data.surveyId; 61 }) 62 .fail(function(response){ 63 swal("通信に失敗しました", "お手数ですが不具合報告フォームからご連絡いただくかサポート窓口までお問い合わせください", "error"); 64 }); 65 } 66 } 67 }); 68 }); 69}); 70
###補足情報(言語/FW/ツール等のバージョンなど)
jQuery2.1.4