2016-05-19 1 views
0

select要素にjsonデータを入力する必要がありますが、現在ターゲット要素を選択することはできません。私はコンソールで何のエラーもありません。何が問題なの?find statmentで要素を選択するには?

のjQuery:

$('#accordion1 select[name$=Tarrif]').change(function() { 
    $.ajax({ 
     url: '/Train/TrianFood', 
     data: { Tarrif: $(this).val() }, 
     type: "POST", 
     success: function (result) { 
      if (result.Result == false) {   
       for (var i = 0; i <result.obj.length; i++) { 
        $(this).closest('.person-information').find('select[name$=Food]').empty().append(new Option(result.obj[i].ServiceType, result.obj[i].ServiceTypeCode)); 
       } 
      } else { 
       $(this).closest('.person-information').find('select[name$=Food]').empty().append(new Option('بدون غذا', 1)); 
      }  
     }, 
     error: function() { } 
    }); 
    //------------- 
}); 

<div class="panel style1"> 
    <h4 class="panel-title"> 
     <a href="#[email protected](j)" data-toggle="collapse" data-parent="#accordion1">مسافر @(j + 1) </a> 
    </h4> 
    <div class="panel-collapse collapse @if(j==0) {<text> in </text>}" id="[email protected](j)"> 
     <div class="panel-content"> 
      <div class="person-information"> 
       <div class="form-group row"> 
        <div class="col-md-4 col-md-push-8"> 
         <label>نام </label> 
         <input type="text" name="[@(j)].FirstName" class="input-text full-width" lang="fa-IR" data-val="true" data-val-required="لطفا نام را وارد نمایید." /> 
         <span class="field-validation-valid" data-valmsg-for="[@(j)].FirstName" data-valmsg-replace="true"></span> 
        </div> 
        <div class="col-md-4"> 
         <label>نام خانوادگی</label> 
         <input type="text" name="[@(j)].LastName" class="input-text full-width" lang="fa-IR" data-val="true" data-val-required="لطفا نام خانوادگی را وارد نمایید." /> 
         <span class="field-validation-valid" data-valmsg-for="[@(j)].LastName" data-valmsg-replace="true"></span> 
        </div> 
        <div class="col-md-4 col-md-pull-8"> 
         <label>کد ملی</label> 
         <input type="text" name="[@(j)].NationalCode" class="input-text full-width" lang="fa-IR" data-val-required="لطفا کد ملی را وارد نمایید." placeholder="کد ملی 10 رقمی" data-val="true" data-val-length="کد ملی باید 10 رقمی باشد." data-val-length-max="10" data-val-length-min="10" data-val-regex="فقط عدد وارد نمایید." data-val-regex-pattern="(^[0-9']+$)" /> 
         <span class="field-validation-valid" data-valmsg-for="[@(j)].NationalCode" data-valmsg-replace="true"></span> 
        </div> 
       </div> 
       <div class="form-group row"> 
        <div class="col-md-4 datepicker-wrap"> 
         <label>تاریخ تولد</label> 
         <input type="text" name="[@(j)].DateOfbirth" autocomplete="off" class="input-text full-width" placeholder="--/--/----" data-val="true" data-val-required="لطفا تاریخ تولد را وارد نمائید." /> 
         <span class="field-validation-valid" data-valmsg-for="[@(j)].DateOfbirth" data-valmsg-replace="true"></span> 
        </div> 
        <div class="col-md-4 col-md-push-4"> 
         <label>جنسیت</label> 
         <div class="selector"> 
          <select class="full-width" name="[@(j)].SexCode"> 
           <option value="1">مرد</option> 
           <option value="2">زن</option> 
           <option value="3">خانواده</option> 
          </select> 
         </div> 
        </div> 
        <div class="col-md-4 col-md-pull-4"> 
         <label>نوع مسافر</label> 
         <div class="selector"> 
          <select class="full-width" name="[@(j)].Tarrif"> 
           @if (TempData["Tarrif"] != null) {                 List<GetAgentAllowedTarrif> lists = new List<GetAgentAllowedTarrif>(); 
            lists = (List<GetAgentAllowedTarrif>)TempData["Tarrif"]; 
            foreach (var item in lists) { 
             <option value="@item.FTariffCode"> @item.TarriffName</option> 
            } 
           } 
          </select> 
         </div> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-md-4 pull-right"> 
         <label>غذا</label> 
         <div class="selector"> 
          <select class="full-width" name="[@(j)].Food"> 
           <option>بدون 1</option> 
           <option value="2">بدون 2</option> 
          </select> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div><!-- end content --> 
    </div> 
</div> 
+1

'$(これは)' – guradio

+0

を得るものエラーアヤックスの内側に異なっています。これをキャッシュするか、Ajaxのオプションで 'context'を使用する必要があります。 – programmer138200

+1

'$(これは)'あなたが考えるものではありません..あなたは私がコンソールにエラーを持っていない – Jai

答えて

1

AJAXリクエストを呼び出す前にcurrent変数に

this、これを試してみて、あなたがcurrent

月にsuccessブロックの内側に書かれているthisを置き換えますこれはあなたを助ける..

+1

広く使われている規約は、別の関数本体の前に 'var self = this'や' var $ this = $(this) 'です。 –

+0

@PavelGatnarありがとうございました... –

0

はこれを試してみてください:

$('#accordion1 select[name$=Tarrif]').change(function() { 
    var this = $(this); 
    $.ajax({ 
     url: '/Train/TrianFood', 
     data: { Tarrif: this.val() }, 
     type: "POST", 
     success: function (result) { 
      if (result.Result == false) { 
       for (var i = 0; i <result.obj.length; i++) { 
        this.closest('.person-information').find('select[name$=Food]').empty().append(new Option(result.obj[i].ServiceType, result.obj[i].ServiceTypeCode)); 
       } 
      } else { 
       this.closest('.person-information').find('select[name$=Food]').empty().append(new Option('بدون غذا', 1)); 
      } 
     }, 
     error: function() { } 
    }); 
});