2013-08-07 11 views
6

Fuelux sihirbazının içine yerleştirilmiş bir form hazırladım. Kişi bir sonraki düğmeye basarsa, kitap alanı zorunlu alanı gösterilmez. Gerekli alanlar girilinceye kadar kullanıcının ileriye tıklayarak ilerleyemeyeceği bir gereksinim haline getirebilecek herhangi bir yöntem var mı? İşte Fuelux sihirbazı doğrulama girişi

Formu göndermeden doğrulamak isterseniz sonraki ve önceki düğmeleri

$(function() { 
$('#MyWizard').on('change', function(e, data) { 
    console.log('change'); 
    if(data.step===3 && data.direction==='next') { 
     // return e.preventDefault(); 
    } 
}); 

$('#MyWizard').on('changed', function(e, data) { 
    console.log('changed'); 
}); 
/*$('#MyWizard').on('finished', function(e, data) { 
    console.log('finished'); 
});*/ 
$('#btnWizardPrev').on('click', function() { 
    $('#MyWizard').wizard('previous'); 
}); 
$('#btnWizardNext').on('click', function() { 
    $('#MyWizard').wizard('next','foo'); 
}); 


$('#btnWizardStep').on('click', function() { 
    var item = $('#MyWizard').wizard('selectedItem'); 
    console.log(item.step); 
}); 
}); 

cevap

7

için kullanılan

<tr> 
    <td>3</td> 
    <td><label class="control-label" for="inputCompanyCountry">Country <span style="color:red">*</span></label></td> 
    <td><div class="controls controls-extra"><input type="text" id="inputCompanyCountry" name="inputCompanyCountry" value=""required></div></td> 
    <td><div class="help-inline">Country of residence</div></td> 
    </tr> 

komut dosyaları jquery.validate kullanabilirsiniz girdi örneğidir . $("#form_id").valid(); yöntemini kullanın, söz konusu girdilere "gerekli" biçim ekleme sınıfının durumuna bağlı olarak true veya false değerini döndürür.

$('#MyWizard').on('change', function(e, data) { 
    console.log('change'); 
    if(data.step===3 && data.direction==='next') { 
     if($("#form_id").valid()){ 
      // allow change 
     }else{ 
      // cancel change 
     } 
    } 
}); 
+0

http://bootply.com/72771 Bu benim sorunumun bir örneğidir. Kullanıcı, giriş alanına bir değer girilene kadar bir sonraki düğmeyi geçememelidir. –

0

Diğer bir seçenek, her bir formdaki bir formun sarılmasıdır ve daha sonra gönderilirken tarayıcı gerekli alanlar dolduruluncaya kadar devam etmeyecektir. Bu, HTML5 özelliklerinin bir parçası olarak formdaki "gerekli" özniteliği destekleyen tarayıcıya bağlıdır, ancak bunu kullanmanız mümkün olabilir. Bu cevap bozuk görünüyor bazı bağlantılar bulunmaktadır, ancak bazı başlangıç ​​bilgilerin yanı var: How to bind to the submit event when HTML5 validation is used?

+0

Sorun, kullanıcı birkaç bölüm halinde ayrılmıştır, bu nedenle kullanıcı chevron # 3 üzerindeyse, # 1 alanında gerekli alanı göremezler. Gerekli alanlar dolduruluncaya kadar "sonraki" tuşa basamazlarsa en iyisi ne olurdu? –

+0

Hem bu durumda hem de yukarıdaki yanıtta, yapmanız gereken şey, düğmelere 'devre dışı' özelliği uygulamaktır. Daha sonra, doğrulama ilettiğinizde bazı etkinlikleri tetiklersiniz. Ayrıca, bu etkinliği dinleyen ve devre dışı bırakılan özniteliği kaldıran bir etkinlik işleyicisine de gereksinim duyarsınız. Yani bunu yapacak tek bir yöntem yok, ama bunu yapmak için yazılacak çok fazla kod yok. Yukarıdaki Birkto tarafından verilen örneği kullanarak, ''' // değiştirmeye izin ver' 'özelliğini kullandığını devre dışı bırakılmış özniteliği kaldırmak için kod koyacaksınız. – scottplumlee

2

ı yaptıklarından: Eğer her iki yönde hareket eden devre dışı bırakmak istiyorsanız

$('#MyWizard').on('change', function(e, data) { 
    var isValid = $('#stepId [required]').valid(); 
    if (data.direction === 'next' && !isValid) { 
     e.preventDefault(); 
    } 
}); 

, o zaman sadece data.direction ==='next' bölümünü kaldırmak .

+0

#stepId'i nasıl buldunuz? Bu –

+0

'#stepId' ile mücadele etmek, atlamak istediğiniz adımın 'id' dir. – Dementic