2012-12-12 5 views
1

그래서 사용자가 버튼을 클릭하면 버튼 값이 질문 번호와 div ID를 보유하게됩니다. . 나는 다음 아이디 question_no "+ _ 텍스트 나 텍스트를 얻어야한다 줄이가있는 범위에있는 텍스트를 액세스하기 위해 그 질문에 번호를 사용하는 것을 시도하고있다 :jQuery .text() 함수가 작동하지 않습니다.

var text=$("div#"+div+" span#"+question_no+"_text").text(); 

문제가 노력하고있다 반 시간이 좀 스팬에 있지만 다른의 텍스트를 사로 잡고

HHere 내가 쓴 스크립트입니다..

<div id="1527" class="Questions"> 
<h1>Questions</h1><hr><br /> 


    <ul class="error" id="498_error"></ul> 
    <span id="498_text">Title of Representative Completing This Section</span><br /> 
    <input type="hidden" name="498_max_length" id="498_max_length" value="25"> 
    <input type="hidden" name="498_min_value" id="498_min_value" value=""> 
    <input type="hidden" name="498_max_value" id="498_max_value" value=""> 
    <input type="hidden" name="498_regex_format" id="498_regex_format" value=""> 
    <input type="hidden" name="498_system_type" id="498_system_type" value="2"> 
    <input type="hidden" name="498_app_type_version" id="498_app_type_version" value="1527"> 

      <input class="questionChoice" type="text" name="498" /> 

    <br /> 
    <button class="add_answer" value="498" data-version="1527">Add answer</button> 
    <br /><br /> 


    <ul class="error" id="2150_error"></ul> 
    <span id="2150_text">Signature:</span><br /> 
    <input type="hidden" name="2150_max_length" id="2150_max_length" value=""> 
    <input type="hidden" name="2150_min_value" id="2150_min_value" value=""> 
    <input type="hidden" name="2150_max_value" id="2150_max_value" value=""> 
    <input type="hidden" name="2150_regex_format" id="2150_regex_format" value=""> 
    <input type="hidden" name="2150_system_type" id="2150_system_type" value="2"> 
    <input type="hidden" name="2150_app_type_version" id="2150_app_type_version" value="1527"> 

      <input class="questionChoice" type="text" name="2150" /> 

    <br /> 
    <button class="add_answer" value="2150" data-version="1527">Add answer</button> 
    <br /><br /> 

</div> 
: 여기

$("button.add_answer").click(function() { 
    var question_no=$(this).attr("value") 
    var div=$(this).attr("data-version"); 
    var text=$("div#"+div+" span#"+question_no+"_text").text(); 
    var answer=$("div#"+div+" [name="+question_no+"]"); 
    var answerText; 
    var answerValue; 
    var checkbox=false; 

    alert($("div#"+div+" span#"+question_no+"_text").length); 

    if (answer[0].tagName.toLowerCase() == "input") { 
     if(answer.attr("type") == "text") { 
      answerText=answer.val(); 
      answerValue=answer.val(); 
     } else if (answer.attr("type") == "radio") { 
      var answer=$("div#"+div+" [name="+question_no+"]:checked"); 
      answerValue=answer.val(); 
      answerText=answer.next().text(); 
     } else { 
      alert("checkbox"); 
      checkbox=true; 
      $("div#"+div+" [name="+question_no+"]:checked").each(function() { 
       answerText=$(this).next().text(); 
       answerValue=$(this).val(); 
       $("div#saved_answers table").append("<tr id=\""+question_no+"\"><td>"+text+"</td><td>"+answerText+"</td></tr>"); 
      });  
     } 
    } else if (answer[0].tagName.toLowerCase()=="textarea") { 
     answerText=answer.val(); 
     answerValue=anser.val(); 
    } else if(answer[0].tagName.toLowerCase == "select") { 
     answerText=answer.find("option:selected").text(); 
     answerVal=answer.val();  
    } 

    if(!checkbox) { 
     $("div#saved_answers table").append("<tr id=\""+question_no+"\"><td>"+text+"</td><td>"+answerText+"</td></tr>"); 
    } 

}); 

그리고는 마크 업입니다

두 번째 질문 인 서명에서 텍스트를 올바르게 가져 왔지만 첫 번째 질문 인이 섹션을 작성하는 대표자 제목은 가져 오지 않았습니다.

텍스트가 입력과 함께 잡힌 후에 나는 테이블에 넣기 만합니다.

이것이 왜 텍스트를 매번 가져 오는 지에 대한 아이디어가 있습니까?

+0

"반쯤 작동"할 수 없습니다. 클릭 이벤트에 중단 점을 배치하고 사용하려고 시도하는 선택기가 올바른지 확인하는 것이 좋습니다. – sdespont

+0

문제는 여기에 있습니다 ->'var div = $ (this) .attr ("data-version");'. 첫 번째 블록에서'data-app_type_version = "1527"'대신'data-version'을 사용하기 때문입니다. 그래서 당신은 'div를 참조 할 수 없다'는 뜻입니다. 그것을 고치면 괜찮을거야. – Ohgodwhy

+0

그들은 코드에서 실제로 스택 오버플로에 입력 할 때 만든 오류입니다. 나는 – Beamer180

답변

1

버튼 중 하나에는 'data-version'속성이 있고 다른 하나에는 'data-app_type_version'속성이 있습니다. 그들은 당신이 당신의 JS (현재 '데이터 버전')에서 참조하는 것과 같아야합니다 :)

+0

그들은 코드에서 실제로 스택 오버플로에 입력 할 때 만든 오류입니다. 내가 게시물을 편집했습니다 – Beamer180

0

스팬은 div의 직계 하위 항목이므로 ">" 일반 자손 선택 자 대신 직접 자손 선택 자로 만들 수 있습니다.

var text = $ ("div #"+ div + "> span #"+ question_no + "_text") text();

+0

아직 운이 ... – Beamer180

+0

당신의 HTML은 꽤 깨끗한가요? 때로는 유효성을 검사하지 않는 HTML로 JQuery를 버릴 수도 있습니다. 비공개 메시지로 볼 수있는 곳이라면 어디에서 볼 수 있습니까? 이메일을 선호하는 경우 ... 내 주소는 스택 오버플로 사용자 이름 @ gmail.com입니다. – rnirnber

관련 문제