2016-03-23 35 views
1

Bir form göndermeye çalışıyorum ve Kendo UI, serileştirildiğinde form alanlarına sahip vidalar ve serileştirilmiş nesnede bir kopya alanı oluşturduğunu fark ettim. Birinin daha önce karşılaşıp karşılaşmadığını ve bir çözüm olup olmadığını bilmek istiyorum.JQuery Serialize Form - Kendo UI Yinelenen Girişler

Diyelim ki bir formun JQuery AJAX postunu yapmak istiyorum.

$.ajax({ 
    type: "POST", 
    url: "/api/MyController", 
    data: formData 
}); 

Böyle basit bir formum olabilir.

<form id="myForm"> 
    <input type="text" name="firstName"> 
</form> 

I (formData değişkeni kullanılır) benim form verilerini seri hale getirmek istiyorsanız, bunu yapardı.

var formData = $('#myForm').serializeArray(); 

Konsoldaki çıktı buna benzer.

[Object { name="firstName", value="John"}] 

Şimdi sorun. Eğer Kendo UI kullanıyorum ve bu girdiden bir açılır kutu veya birleşik giriş yapıyorum ve formu serileştirmeye çalışıyorum, başka bir giriş (alt çizgiye sahip olanı) tanınıyor. Eğer aşina değilseniz

[Object { name="firstName_input", value="John"}, Object { name="firstName", value="John"}] 

, Kendo UI veri için bir API uzaktan görüşmeleri ile comboboxes veya açılır listeleri oluşturmak için basit girişini kullanır. İşte combobox nasıl oluşturulur.

var firstNameComboBox= $('#firstName').kendoComboBox({ 
    placeholder: "Select a Name", 
    dataTextField: "Name", 
    dataValueField: "ID", 
    change: myChangeFunction,  //On change event 
    dataSource: { 
     type: "json", 
     transport: { 
      read: { 
       dataType: "json", 
       url: "/api/MyController/MyAction", 
       data: { } 
      }, 
     } 
    } 
}).data("kendoComboBox"); 
+0

Kendo comboBox oluşturulduktan sonra girişin html'sini ekleyebilir misiniz? – unicorn2

+0

İyi Kendo, giriş kutusunun girişinden çıkışını oluşturur. İlk önce orada olmalı. Hedeflenecek bir şeye ihtiyacı var. – madvora

+0

Evet haklısınız, ancak F12 kullanın ve html'yi inceleyin. Kendo belki de sizin bir şeyler yapıyor olmanızın farkında değilsiniz – unicorn2

cevap

1

Yasal Uyarı: Telerik/Kendo UI ekibi

tarif beklenen davranıştır için çalışıyorum. Temel olarak, ComboBox seçilen metni tutan ikinci bir giriş öğesi oluşturur. Pencere öğesi, aşağıdaki "{name} _input" biçimini kullanarak bu giriş öğesine adı özniteliği ekler. Bir giriş öğesinin, adı özniteliğine sahip olduğunu bildiğiniz gibi, successful olur ve form bunu gönderir.

Bu, hata olduğunda aynı yayınlanan sayfayı döndüren sunucu platformları lehine yapılır. Bu, sunucu geliştiricilerin bu değeri almasına ve bir ComboBox text yapılandırma seçeneği olarak döndürmesine yardımcı olur.

Bu durum, POST yükü ile model alan adları/adlarıyla eşleşmesi gerektiği için, yayınlanan değeri kullanan geliştiricinin bir sorunu olabileceğine inanmıyorum.