2017-05-21 96 views
0

通常我們創建一個表單。通過'add-question-btn'我向表單添加一個新問題。我們可以添加很多問題,作爲所有者(作者),我們必須通過從下拉列表中選擇來決定什麼是「類型」的答案。JQUERY,選擇ID

var num_question_options = [0]; 
var num_questions = 1; 

$('#add-question-btn').click(function() { 
    $('.questions').append(
     '<div class="questions-div" id="question-' + num_questions + '">' + 
     '<label id="question-label" for="question-text">id:' + num_questions + '</label>' + 
     '<input class="form-control" id="question-text" type="text" placeholder="Pytanie"/>' + 
     '<div class="select-select-type">' + 
     '<div class="dropdown">' + 
     '<select title="type" class="select-type form-control" id="select-' + num_questions + '">' + 
     '<option value="text">Krótka odpowiedz</option>' + 
     '<option value="radio">Wielokrotny wybór</option>' + 
     '<option value="checkbox">Pola wyboru</option>' + 
     '<option value="menu">Menu</option>' + 
     '<option value="scale">Skala liniowa</option>' + 
     // tego na razie nie bedzie 
     // '<option value="table">Siatka wielokrotnego wyboru</option>' + 
     '<option value="date">Data</option>' + 
     '<option value="hour">Godznia</option>' + 
     '</select>' + 
     '</div>' + 
     '<ul id="answers" class="list-unstyled"></ul>' + 
     '</div>' 
    ); 
    num_question_options[num_questions] = 0; 
    num_questions++ 
}); 

根據選定的答案類型,我們應該收到一個地方輸入可能的答案(作爲作者)。這是我的功能,檢測選定選項的變化。

的問題是:如何選擇ID發現裏面那個函數知道哪個該事物應該被追加。

$(document).on('change','select',function(){ 
    var select_val = this.value; 
    var field_val = parseInt($(this).attr("id")); //THIS IS PROBLEM 
    alert(field_val); 
    switch (select_val) { 
     case 'text': 
      alert('TESTtext'); 
      break; 
     case 'radio': 
      alert('TESTradio'); 
      var question = $('div.questions-div#question-' + field_val); 
      var id = { 
       questionId: field_val, 
       optionId: num_question_options[field_val] + 1 
      }; 
      question.find('ul#answers').append(
       '<li>' + 
       '<input class="form-control" ' + 
       'title="answer" ' + 
       'id="answer-' + num_question_options[field_val] + '" ' + 
       'type="text" ' + 
       'onfocus="add_option(' + id.questionId + ', +' + id.optionId + ')" ' + 
       'onblur="remove_option(' + id.questionId + ', +' + id.optionId + ')" />' + 
       '</li>' 
      ); 
      num_question_options[field_val]++; 
      break; 
     case 'checkbox': 
      alert('TESTcheckbox'); 
      break; 
     case 'menu': 
      alert('TESTmenu'); 
      break; 
     case 'scale': 
      alert('TESTscale'); 
      break; 
     case 'date': 
      alert('TESTdate'); 
      break; 
     case 'hour': 
      alert('TEShour'); 
      break; 
    } 
}); 

回答

0

你的問題似乎是parseInt。它不能將select-ID轉換爲整數,但返回NAN。像這樣嘗試:

var field_val = parseInt($(this).attr("id").replace(/[^\d]/g,'')); 

這將在解析爲int之前過濾所有非數字字符。

另一種不可能性的解決方案是使用數據的屬性,如:

<select data-question-id="123"> ... </select> 

所以,你可以通過$(this).data('questionId')檢索問題ID。

你還應該檢查你的標記。似乎有3個開放的div標籤和2個關閉的標籤。

+0

thx,與.replace(/ [^ \ d]/g,'')它的工作原理。 –

+0

@JanekWojciechowski你能接受我的回答嗎? – Gerry

+0

對不起,我和thx再次 –