2015-11-09 3 views
0

У меня есть приложение, состоящее из нескольких вопросов опроса. Я пытаюсь сохранить индексный номер указанных полей <input> и <select>, чтобы показать их в определенном порядке.Установка значения переменной из нескольких jQuery .val() с несколькими селекторами

С учетом сказанного ниже утверждение выглядит в порядке?

yesNoQuestions[index].question_text = $(item).find("input, select").val(); 

Или мне нужно сделать это (пожалуйста, медведь со мной, как я нуб с ним приходит в JQuery):

yesNoQuestions[index].question_text = $(item).find("input").val(); 
yesNoQuestions[index].question_text = $(item).find("select").val(); 

Здесь вся функция, которая должна сохранить значение в с помощью кнопки.

$("#save-button").button().click(function (e) { 
      e.preventDefault(); 
      var surveyYesNoQuestions = $("#questionList").data("surveyYesNoQuestions"); 
      var yesNoQuestions = surveyYesNoQuestions.yesNoQuestions; 
      $("#questionList li").each(function (i, item) { 
       var index = $(item).data("index"); 
       //Don't need to do all this, just send back the new list since they are being all inserted anyways into a new version 
       if (index != null && index != undefined) { 
        yesNoQuestions[index].question_text = $(item).find("input, select").val(); 
        //yesNoQuestions[index].question_text = $(item).find("select").val(); 
        yesNoQuestions[index].order = i; 
       } else { 
        var question = 
         { 
          question_text: $(item).find("input, select").val(), 

          order: i, 
          survey_version_question_id: -1 
         } 
        yesNoQuestions.push(question); 
       } 
      }); 
      var params = { surveyYesNoQuestions: surveyYesNoQuestions } 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       data: JSON.stringify(params), 
       url: "WebServices/WebService.asmx/SaveSurveyYesNoQuestions", 
       success: function (data) { 
        location.reload(); 
       }, 
      }); 
     }); 

Адрес: html до его отправки в базу данных;

<ul id="questionList" class="ui-sortable"> 
    <li class="ui-state-default ui-widget yesNoQuestion"> 

<button class="question-delete ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button"> 

<span class="ui-button-text">delete</span></button><input class="question-input ui-widget-content"> 
    </li> 
<li class="ui-state-highlight ui-draggable ui-draggable-handle" style="width: 700px; height: 30px;"> 
<button class="question-delete ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button"> 
<span class="ui-button-text">delete</span></button> 
<select id="questionsDropDownBox"> 

       <option>Yes, 100% </option> 
       <option>No, but greater than 75% </option> 
       <option>No, but greater than 50%</option> 
       <option>No, but greater than 25%</option> 
       <option>No, but less than 25%</option> 
       <option>None</option> 
      </select> 
</li> 

Вот это после того, как мы называем это для

<div class="yesno-question-row" data-answerid="1020190"> 
<span class="yesno-question">1. Some question text....</span> 
<span class="yesno-answer"><span class="yesno-radio required"> 
<input class="yesno-radio-button" type="radio" name="yesno1020190" value="Yes" undefined="">Yes 
<input class="yesno-radio-button" type="radio" name="yesno1020190" value="No" undefined="">No</span> 
<span class="yesno-comment"> <textarea class="yesno-textarea ui-widget-content"></textarea></span></span> 
</div> 

Наконец это создает строки

function createYesNoQuestionRow(questionText, answerText, commentText, answerId) { 
      //returns a jquery object of the html for the row 
      var $yesNoQuestionRow = $("<div class='yesno-question-row' data-answerid='" + answerId + "'/>"); 
      var question = "<span class='yesno-question'>" + questionText + "</span>"; 
      var radioId = "yesno" + answerId; 
      var radioChecked = new Object(); 
      radioChecked[answerText] = "checked"; 
      var yesno = "<span class='yesno-radio required'><input class='yesno-radio-button' type='radio' name='" + radioId + "' value='Yes' " + radioChecked["Yes"] + ">Yes <input class='yesno-radio-button' type='radio' name='" + radioId + "' value='No' " + radioChecked["No"] + ">No</span>"; 
      var textarea = "<span class='yesno-comment'> <textarea class='yesno-textarea ui-widget-content'>" + commentText + "</textarea></span>"; 
      return $yesNoQuestionRow.append($(question)).append($("<span class='yesno-answer'/>").append($(yesno)).append($(textarea))); 
      //return $yesNoQuestionRow.append($(yesno)).append($(question)).append($(textarea)); 
     } 
+2

Работает ли это при попытке? –

+1

Это относится к [codereview.stackexchange] (http://codereview.stackexchange.com/) –

+0

У меня еще нет, прежде чем я попробую, я просто хотел получить второе мнение. – CoderPoet

ответ

0

Если вы хотите, чтобы получить ответы на вопросы, представленные на все вопросы, в массиве что-то вроде этого должно работать:

var questions = $('input:text', 'select', 'input:radio:checked', 'input:checkbox:checked'); 
var yesNoQuestions = $.map(questions, function(item){ 
    return $(item).val(); 
}); 
+0

Привет, Грег, Спасибо за ваш ввод. Я обновил код, чтобы вы могли видеть внутреннюю работу. – CoderPoet

+0

Вы задали оригинальный вопрос о jquery. Код веб-службы не имеет значения для javascript. То, что мне действительно нужно увидеть, чтобы помочь, - это HTML, который выводится в браузер. –

+0

Спасибо, Грег это действительно помогло мне. – CoderPoet

Смежные вопросы