[JQUERY] 테이블의 동적 텍스트 상자에 대한 설정 클래스 검증
JQUERY테이블의 동적 텍스트 상자에 대한 설정 클래스 검증
해결법
-
1.당신은 텍스트 상자 또는 클라이언트 측 유효성 검사를 할 jquery.validate.unobtrusive.js에서 사용하는 검증 메시지를 표시하기위한 자리 표시 자 요소에 필요한 데이터 발 속성을 포함하지 않습니다. 또한, 현재 구현은 사용자가 다른 것을 제거하는 것을 허용하지 않는 비 연속 인덱서가 게시 컬렉션에 바인딩 할 수 있습니다 인덱서에 대한 숨겨진 입력을 포함하여 해결할 수있는 마지막 행.
당신은 텍스트 상자 또는 클라이언트 측 유효성 검사를 할 jquery.validate.unobtrusive.js에서 사용하는 검증 메시지를 표시하기위한 자리 표시 자 요소에 필요한 데이터 발 속성을 포함하지 않습니다. 또한, 현재 구현은 사용자가 다른 것을 제거하는 것을 허용하지 않는 비 연속 인덱서가 게시 컬렉션에 바인딩 할 수 있습니다 인덱서에 대한 숨겨진 입력을 포함하여 해결할 수있는 마지막 행.
먼저 TargetInfo 속성에 하나 개의 기본 ClsTargetInfo 객체를 추가하여 시작하고보기의 HTML을 생성
<table id="table"> // add an id attribute <thead>.....</thead> <tbody is="tablebody"> // add an id attribute for(int i = 0; i < Model.TargetInfo.Count; i++) { <tr> <td> @Html.TextBoxFor(m => m.TargetInfo[i].TargetColor_U, new { id="", @class="form-control" }) // remove the unnecessary id attribute @Html.ValidationMessageFor(m => m.TargetInfo[i].TargetColor_U) // Add the following hidden input to only one column in the row <input type="hidden" name="TargetInfo.Index" value=@i /> </td> <td> @Html.TextBoxFor(m => m.TargetInfo[i].TargetColor_V, new { id="", @class="form-control" }) // remove the unnecessary id attribute @Html.ValidationMessageFor(m => m.TargetInfo[i].TargetColor_V) </td> .... // other columns </tr> } </tbody> </table>
그 다음은 같은 것을 보여야
요소에 대해 생성하는 HTML을 검사 <tr> <td> <input data-val="true" data-val-required="The TargetColor_U field is required" name="TargetInfo[0].TargetColor_U" type="text" value=""> <span class="field-validation-valid errorText" data-valmsg-for="TargetInfo[i].TargetColor_U" data-valmsg-replace="true"></span> <input type="hidden" name="TargetInfo.Index" value="0" /> </td> .... </tr>
폼 태그 밖에 배치 이름 = "TargetInfo [0]가 .TargetColor_U이"이름가되도록, 더미 문자로 인덱서의 모든 인스턴스를 대체 = "TargetInfo [#]. TargetColor_U"), 및 숨겨진 요소 내에 복사 값 = "0"이된다도록 또한 숨겨진 입력 값 속성을 대체 값 = "#"
<table id="newrow" style="display:none"> .... // copy the tr element and its contents here </table>
그런 다음 스크립트는 모양을
var form = $('form'); // or use the id if you have given the form an id var newrow= $('#newrow'); var tablebody = $('#tablebody'); // modify to suit your id $("#btnAddTarget").click(function() { var index = (new Date()).getTime(); // unique indexer var clone = newrow.clone(); // clone the new row clone.html($(clone).html().replace(/#/g, index)); // update the indexer of the clone var row = clone.find('tr'); tablebody.append(row); // add the new row to the table // Reparse the validator form.data('validator', null); $.validator.unobtrusive.parse(form); });
사이드 노트 :
2.
<script src="Scripts/jquery-1.10.2.min.js"></script> <script type="text/javascript"> $(document).ready(function () { function DeleteRow(btn) { //alert("delete" + btn); var tr = btn.closest('tr'); tr.remove(); } $(".btnsd").click(function () { // debugger; alert("hjkghk"); divs = $('.val') for (ind in divs) { var div = divs[ind]; if (div.value == "") { div.focus(); return false; } } $('#Employertbl').append( '<tr>' + '<td> @Html.TextBox("item.employer_name", null, new { @class = "form-control val" })</td>' + '<td width="24%"> <div style="float:left; padding-right:5px;">@Html.TextBox("item.duration_From", null, new { @id = "", @placeholder = "From Date", @class = "form-control input-date datepicker val", @readonly = true })</div> ' + '<div>@Html.TextBox("item.duration_to", null, new { @id = "", @class = "form-control input-date datepicker val", @placeholder = "To Date", @readonly = true })</div></td>' + '<td> @Html.TextBox("item.designation", null, new { @class = "form-control val" })</td>' + '<td> @Html.TextBox("item.worked_skill", null, new { @class = "form-control val" })</td>' + '<td> @Html.TextBox("item.proj_handled", null, new { @class = "form-control val" })</td>' + '<td> @Html.CheckBox("item.current_employed",new{@class = "current" })</td>' + '<td><input type="button" value="Remove" onclick="DeleteRow(this)" name="delete" class="btn blue pull-right" /> </td>' + '</tr>' ); }); }); </script> <div class="table-responsive"> <table id="Employertbl" class="table table-striped table-bordered table-hover dataTable no-footer"> <tbody> <tr> <th>Employer Name</th> <th>Duration</th> <th>Designation</th> <th>Worked skill(s)</th> <th>Reason of change</th> <th>Currently Employed</th> <th>Action</th> </tr> <tr> <td> <input class="form-control val" id="item_employer_name" name="item.employer_name" type="text" value=""> </td> <td width="24%"> <div style="float:left; padding-right:5px;"><input class="form-control input-date datepicker val hasDatepicker" name="item.duration_From" placeholder="From Date" type="text" value="" id="dp1459328857835"></div> <div> <input class="form-control input-date datepicker val hasDatepicker" name="item.duration_to" placeholder="To Date" type="text" value="" id="dp1459328857836"></div> </td> <td> <input class="form-control val" id="item_designation" name="item.designation" type="text" value=""> </td> <td> <input class="form-control val" id="item_worked_skill" name="item.worked_skill" type="text" value=""> </td> <td> <input class="form-control val" id="item_proj_handled" name="item.proj_handled" type="text" value=""> </td> <td> <input class="current" id="item_current_employed" name="item.current_employed" type="checkbox" value="true"><input name="item.current_employed" type="hidden" value="false"> </td> <td> <input id="myButton" type="button" value="add" name="delete" class="btnsd bcbn"> </td> </tr> <tr><td> <input class="form-control val" id="item_employer_name" name="item.employer_name" type="text" value=""></td><td width="24%"> <div style="float:left; padding-right:5px;"><input class="form-control input-date datepicker val hasDatepicker" name="item.duration_From" placeholder="From Date" type="text" value="" id="dp1459328857837"></div> <div><input class="form-control input-date datepicker val hasDatepicker" name="item.duration_to" placeholder="To Date" type="text" value="" id="dp1459328857838"></div></td><td> <input class="form-control val" id="item_designation" name="item.designation" type="text" value=""></td><td> <input class="form-control val" id="item_worked_skill" name="item.worked_skill" type="text" value=""></td><td> <input class="form-control val" id="item_proj_handled" name="item.proj_handled" type="text" value=""></td><td> <input class="current" id="item_current_employed" name="item.current_employed" type="checkbox" value="true"><input name="item.current_employed" type="hidden" value="false"></td><td><input type="button" id="myButton" value="add" name="delete" class="btnsd dfsd"> </td></tr> <tr><td> <input class="form-control val" id="item_employer_name" name="item.employer_name" type="text" value=""></td><td width="24%"> <div style="float:left; padding-right:5px;"><input class="form-control input-date datepicker val hasDatepicker" name="item.duration_From" placeholder="From Date" type="text" value="" id="dp1459328857839"></div> <div><input class="form-control input-date datepicker val hasDatepicker" name="item.duration_to" placeholder="To Date" type="text" value="" id="dp1459328857840"></div></td><td> <input class="form-control val" id="item_designation" name="item.designation" type="text" value=""></td><td> <input class="form-control val" id="item_worked_skill" name="item.worked_skill" type="text" value=""></td><td> <input class="form-control val" id="item_proj_handled" name="item.proj_handled" type="text" value=""></td><td> <input class="current" id="item_current_employed" name="item.current_employed" type="checkbox" value="true"><input name="item.current_employed" type="hidden" value="false"></td><td><input type="button" id="myButton" value="add" name="delete" class="btnsd"> </td></tr> </tbody> </table> </div>
from https://stackoverflow.com/questions/29837547/set-class-validation-for-dynamic-textbox-in-a-table by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] jQuery를 사용하여 URL에서 쿼리 문자열 가져 오기 [중복] (0) 2020.09.28 [JQUERY] 사용자가 IE를 사용하고 있는지 확인 (0) 2020.09.28 [JQUERY] jQuery로 JSONP 요청 아약스 크로스 도메인 확인 (0) 2020.09.28 [JQUERY] 캐시되는 정지 jQuery를 .load 응답 (0) 2020.09.28 [JQUERY] 커서가 자바 스크립트를 사용하는 텍스트를 삽입 / JQuery와 (0) 2020.09.28