복붙노트

[JQUERY] 테이블의 동적 텍스트 상자에 대한 설정 클래스 검증

JQUERY

테이블의 동적 텍스트 상자에 대한 설정 클래스 검증

해결법


  1. 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. 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>
    
  3. from https://stackoverflow.com/questions/29837547/set-class-validation-for-dynamic-textbox-in-a-table by cc-by-sa and MIT license