2015-01-22 3 views
0

나는 (파일 이름으로 연결되는) 간단한 파일러를 가지고있다. 나는 다음과 같은 자바 스크립트가 실행되는 파일 이름을 클릭하면 :이 값은 숨겨진 필드에 설정되는내 값이 덮어 쓰지 않고 숨겨진 필드에 추가되는 이유는 무엇입니까?

<script> 
    $(function() { 
     $(".fileSelect").click(function() { 
      var name = $(this).text(); //gets the name of the clicked file 
      var id = $(this).attr("id");// gets the id of the clicked file 
      $("#filehiddenid").val(id); // sets the file id, but wrongly appends 
      $("#fileDisplayText").val(name); //sets the display name 
      $("#mySelectFile").modal("hide"); //hides the modal file dialog 
     }); 
    }) 
</script> 

내 파일 (데이터베이스 ID)의 내부 ID이며, 파일 이름이 표시됩니다.

내 문제는 내가 반복적으로 새 파일을 선택하고 양식을 게시 한 다음 selct를 게시하고 양식을 게시 할 때 등입니다. 파일 선택의 값이 양식 컬렉션에 추가되므로 양식을 게시 할 때 나는 176, 178, 179, 과 같은 값을 얻는다. 단지 내가 선택한 최신 값인 176이 아니다.

* 편집 :

<div class="templateSetting"> 
     <div> 
      <span> 
      <strong> 
       @setting.SettingData.Name 
       </strong> 
      </span>  <br /> 
      <span>@setting.SettingData.Description</span> 

      <input type="hidden" id="filehiddenid" name="[email protected]" value="@setting.Value" /> 
     </div> 
     <div> 
      <div style="float: left; width: 40%;"> 
<input type="text" style="width:545px;" id="fileDisplayText" name="[email protected]" value="@fileName" class="form-control" /></div> 
      <div style="width: 60%;"> 
       <a href="#" data-toggle="modal" title="Select File" data-target="#mySelectFile" class="btn btn-sm btn-default">Select File</a> 
      </div> 
      <div class="templatealias">@setting.SettingData.Alias</div> 
      <div style="clear:both;"></div> 
     </div> 
    </div> 
: 마크 업 * 이, 내가 자바 스크립트를 맞게 입력 필드의 id의 이름 면도기 변수를 무시하세요, 내 코드가 마크 업 생성되는 서버 측에 추가

편집이 전체 마크 업 렌더링 :

<form action="/InteractiveApplications/EditApplication/23" id="editform" method="post" name="editform"> 
    <section id="container"> 
     <div id="wrapping" class="clearfix" style="padding-left:10px;width:100%;"> 
     <div id="WorkContent"> 
      <div class="validation-summary-valid" data-valmsg-summary="true"> 
       <ul> 
        <li style="display:none"></li> 
       </ul> 
      </div> 
      <input data-val="true" data-val-number="The field CurrentFolderId must be a number." data-val-required="Feltet CurrentFolderId skal udfyldes." id="CurrentFolderId" name="CurrentFolderId" type="hidden" value="0"> 
      <input data-val="true" data-val-number="The field ApplicationId must be a number." data-val-required="Feltet ApplicationId skal udfyldes." id="ApplicationId" name="ApplicationId" type="hidden" value="23"> 
      <table style="width: 50%;padding-left: 20px;" class="tablelist"> 
       <tbody> 
        <tr> 
        <td valign="top"> 
         <table width="100%"> 
          <tbody> 
           <tr> 
           <td style="width:120px;vertical-align:top;"> 
            <label for="Name">Name</label>: 
           </td> 
           <td> 
            <input class="form-control" id="Name" name="Name" type="text" value="Afstemning"> 
           </td> 
           </tr> 
           <tr> 
           <td style="width:120px;vertical-align:top;"> 
            <label for="Description">Description</label>: 
           </td> 
           <td> 
            <textarea class="form-control" cols="20" id="Description" name="Description" rows="2">This is a poll to take when entering the library</textarea> 
           </td> 
           </tr> 
           <tr> 
           <td style="width:120px;vertical-align:top;"> 
            <label for="Templates">Template</label>: 
           </td> 
           <td> 
            Simple Poll Template 
           </td> 
           </tr> 
           <tr> 
           <td style="width:120px;vertical-align:top;"> 
            <label for="ApplicationData">Path</label>: 
           </td> 
           <td> 
            <input class="form-control" id="ApplicationData" name="ApplicationData" type="text" value="http://10.0.0.44:81/"> 
           </td> 
           </tr> 
           <tr> 
           <td style="width:120px;vertical-align:top;"> 
            <label for="BlockHostExit">Block host exit</label>: 
           </td> 
           <td> 
            <input checked="checked" data-val="true" data-val-required="Feltet Block host exit skal udfyldes." id="BlockHostExit" name="BlockHostExit" type="checkbox" value="true"><input name="BlockHostExit" type="hidden" value="false"> 
           </td> 
           </tr> 
          </tbody> 
         </table> 
        </td> 
        <td valign="top" style="padding-left: 20px"> 
         <img src="/InteractiveImages/689a492e-7e01-49cc-b0b3-57e23b621706.jpg" width="100%" style="text-align: center;max-width: 200px;"><br> 
         <input id="ImagePath" name="ImagePath" type="hidden" value="/InteractiveImages/689a492e-7e01-49cc-b0b3-57e23b621706.jpg">       <a style="color: gray" href="/InteractiveApplications/ChangePicture/23"> 
         Change Picture 
         </a> 
        </td> 
        </tr> 
       </tbody> 
      </table> 
     </div> 
     </div> 
    </section> 
    <div class="titleBar" style="padding-left:-10px;height:30px;border-bottom:1px solid #307AAB"> 
     <h2> Application configuration</h2> 
    </div> 
    <div style="padding: 10px"> 
     <div> 
     <div id="templateSettings" class="templateSettings"> 
      <div class="templateSetting"> 
       <div class="templateSettingLeading"> 
        <strong> 
        Submit Text 
        </strong><br> 
        This is the text for the submit button 
       </div> 
       <div class="templateSettingInput"> 
        <div style="width:50%;float:left;"> <input type="text" name="setting_submittext" value="qwer" class="form-control"></div> 
        <div class="templatealias">submittext</div> 
        <div style="clear:both;"></div> 
       </div> 
      </div> 
     </div> 
     <div id="templateSettings" class="templateSettings"> 
      <div class="templateSetting"> 
       <div class="templateSettingLeading"> 
        <strong> 
        Multiple choice 
        </strong><br> 
        This determines if the poll has multiple right answers 
       </div> 
       <div class="templateSettingInput"> 
        <input type="hidden" id="setting_ismultiplechoice" name="setting_ismultiplechoice" value="off"> 
        <input id="ismultiplechoice" type="checkbox" name="setting_ismultiplechoice"> 
        <div class="templatealias"> 
        ismultiplechoice 
        </div> 
       </div> 
      </div> 
      <script> 
       $(document).ready(function() { 
        $("#checkbox_ismultiplechoice").click(function() { 
         var settingId = "#setting_ismultiplechoice"; 
         var currentVal = $(settingId).val(); 
         if (currentVal == "off") { 
          $(settingId).val("on"); 
         } 
         else { 
          $(settingId).val("off"); 
         } 
        }); 
       }); 
      </script> 
     </div> 
     <div id="templateSettings" class="templateSettings"> 
      <script type="text/javascript"> 
       var answerCounter = 1; 
       var trueFalseCounter = 0; 
       $(document).ready(function() { 
        $("#addbutton").click(function() { 
         answerCounter += 1; 
         trueFalseCounter += 1; 
         $("#questioninput_question").append("<div id='answer_" + answerCounter + "'>Answer: <input type='text' name='setting_question:" + answerCounter + "' value='' class='form-control' /><input type='checkbox' name='answer_setting_question:" + answerCounter + "' />This is the correct answer <input type='button' value='Delete' class='deleteButton btn btn-warning btn-xs' id='deletebutton_" + answerCounter + "'/></div>"); 
        }); 

        $(".templateSettingInput").on("click", ".deleteButton", function() { 
         if(confirm("Are you sure you want to delete this answer?")) 
         { 
          $(this).parent().remove(); 
         } 

        }); 
       }); 
      </script> 
      <div class="templateSetting"> 
       <div class="templateSettingLeading"> 
        <strong> Question</strong> 
        This is the question and the answers for the poll 
       </div> 
       <div class="templatealias"> 
        question 
       </div> 
       <div class="templateSettingInput" id="questioninput_question" style="width:50%;"> 
        <textarea cols="40" rows="4" name="setting_question" class="form-control">werwe</textarea> 
        <input style="vertical-align: top" type="button" id="addbutton" value="Add answer" class="addbutton btn btn-info btn-xs navbar-btn"><br> 
        <div id="answer_1"> 
        Answer: 
        <input type="text" name="setting_question:1" value="wer" class="form-control"> 
        <!--<input type='checkbox' name='answer_setting_question:1' />This 
         is the correct answer--> 
        <input type="button" value="Delete" id="deletebutton_1" class="deleteButton btn btn-warning btn-xs"> 
        </div> 
       </div> 
      </div> 
     </div> 
     <div id="templateSettings" class="templateSettings"> 
      <div class="templateSetting"> 
       <div class="templateSettingLeading"> 
        <strong> 
        Show Answer to user 
        </strong><br> 
        determines if the user should see answers 
       </div> 
       <div class="templateSettingInput"> 
        <input type="hidden" id="setting_showanswer" name="setting_showanswer" value="off"> 
        <input id="showanswer" checked="'checked'" type="checkbox" name="setting_showanswer"> 
        <div class="templatealias"> 
        showanswer 
        </div> 
       </div> 
      </div> 
      <script> 
       $(document).ready(function() { 
        $("#checkbox_showanswer").click(function() { 
         var settingId = "#setting_showanswer"; 
         var currentVal = $(settingId).val(); 
         if (currentVal == "off") { 
          $(settingId).val("on"); 
         } 
         else { 
          $(settingId).val("off"); 
         } 
        }); 
       }); 
      </script> 
     </div> 
     <div id="templateSettings" class="templateSettings"> 
      <div class="templateSetting"> 
       <div> 
        <span> 
        <strong> 
        Background 
        </strong> 
        </span>  <br> 
        <span>Please select a background image</span> 
        <input type="hidden" id="id_background" name="setting_background" value="172,201,173,175,172,178,178,,"> 
       </div> 
       <div> 
        <div style="float: left; width: 40%;"><input type="text" style="width:545px;" id="text_background" name="meta_setting_background" value="611a756c4c3d338fc4ffcebf8b1979d6.png" class="form-control"></div> 
        <div style="width: 60%;"> 
        <a href="#" data-toggle="modal" title="Select File" data-target="#mySelectFile" class="btn btn-sm btn-default">Select File</a> 
        </div> 
        <div class="templatealias">background</div> 
        <div style="clear:both;"></div> 
       </div> 
      </div> 
      <!-- Modal --> 
      <div class="modal fade" id="mySelectFile" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
       <div class="modal-dialog"> 
        <div class="modal-content"> 
        <div class="modal-header"> 
         <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> 
         <h4 class="modal-title" id="myModalLabel">Select file</h4> 
        </div> 
        <div class="modal-body"> 
         <div class="foldertree"> 
          <ul> 
           <li id="0" class="folder"> 
           <a href="#" class="folderSelect" id="0">All</a> 
           <ul> 
            <li id="173" class="file"><a href="#" class="fileSelect" id="173">iStock_000032787140Large.jpg</a></li> 
            <li id="174" class="file"><a href="#" class="fileSelect" id="174">52_fordele.jpg</a></li> 
            <li id="175" class="file"><a href="#" class="fileSelect" id="175">11376047043_a06bed34bd_o.jpg</a></li> 
            <li id="177" class="file"><a href="#" class="fileSelect" id="177">DigitalSignage.png</a></li> 
            <li id="178" class="file"><a href="#" class="fileSelect" id="178">mediawall_search_br.jpg</a></li> 
           </ul> 
           </li> 
           <ul> 
           <li id="59" class="folder"> 
            <a href="#" class="folderSelect" id="59">Test interactive folder</a> 
            <ul> 
             <li id="172" class="file"><a href="#" class="fileSelect" id="172">611a756c4c3d338fc4ffcebf8b1979d6.png</a></li> 
            </ul> 
           </li> 
           </ul> 
          </ul> 
         </div> 
        </div> 
        <div class="modal-footer"> 
         <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
        </div> 
        </div> 
        <div class="templateSettingInput"> 
        <input type="text" name="setting_background" value="172,201,173,175,172,178,178,," class="form-control"> 
        <div class="templatealias">background sdhsdsd</div> 
        </div> 
       </div> 
       <script> 
        $(function() { 
         $(".fileSelect").click(function() { 
          var name = $(this).text(); 
          var id = $(this).attr("id"); 
          var elementId = 'id_background'; 
          var elementText = 'text_background';    
          $("#" + elementId).val(id); 
          $("#" + elementText).val(name); 
          $("#mySelectFile").modal("hide"); 
         }); 
        }) 
       </script> 
      </div> 
     </div> 
     </div> 
    </div> 
</form> 
+1

이 코드 블록은 양식 요소에서 작동하는 유일한 코드입니까? html로 된 양식을 볼 수 있습니까? –

+0

작성된 것처럼 코드가 다음 코드를 추가하지 않고 id를 대체합니다. http://jsfiddle.net/aybqjh18/ 틀린 부분은 추측 할 수 있습니다. 양식 루프에 어딘가에 넣을 수 있습니다. –

+0

html 요소? – thelastshadow

답변

2

는 동일한 아이디로 페이지되지 않은 다른 숨겨진 입력이 있는지 확인하고 브라우저에서 HTML을보고 확인하는 가치 오 jquery가 요소를 수정하기 전에 요소가 올바른지 확인하십시오.

jquery id 선택기 (http://api.jquery.com/id-selector/)는 해당 ID가있는의 첫 번째 요소 만 선택합니다.

양식에 같은 이름의 숨겨진 입력 요소가 여러 개있는 경우 모두 서버에 게시됩니다.

+0

답이 더 많은 정보를 제공하도록 편집되었습니다. –

+0

글쎄, 지금은 대답이 더 많아, 받아 들일 수 있지만, 이것은 질문자가 직면 한 특별한 문제라고 생각하지 않습니다 : P –

+0

명확한 대답을 편집했습니다. 같은 숨겨진 입력 요소가 여러 개있는 경우 양식의 이름은 모두 서버에 게시됩니다. '라는 메시지가 문제의 원인입니다. –

관련 문제