2013-03-18 10 views
16

Ben jquery.validate kullanıyorum bir form var. BaşlangıçtaJQuery.Validate iletileri ile dinamik kurallar ekleyerek

$("#formName").append(...); 

$("#newInputName").rules("add", { 
    required: true, 
    messages: { 
    required: "Enter something else" 
    } 
}); 

olursa ...

$("#formName").validate({ 
    rules: { 
    myExistingInput: { 
     required: true 
    } 
    }, 
    messages: { 
    myExistingInput: { 
     required: "Enter something" 
    } 
    }, 
    ignore: null, // include hidden fields (see below) 
    submitHandler: function(form) { 
    // do stuff 
    }, 
    invalidHandler: function(event, validator) { 
    // do stuff (some of the fields may have been hidden by a collapsible panel 
    // if there is an error on one of those fields, expand the panel so the error 
    // becomes visible) 
    } 
}); 

Daha sonra, dinamik olarak forma alan ekleyin ve onları da alanlar için kural eklemek ... kural ve özel mesajlarının bir set ile doğrulamak çağrı sonra tarayıcıda

Exception occured when checking element newInputName, check the 'messages' method.TypeError: Unable to get property 'call' of undefined or null reference

hata ayıklama, hata "check" fonksiyonu içinden atılıyor görmek ve o olabilir ... Ben jquery.validate içinden bir hata alıyorum, formu göndermek " yöntem "değişkeni "mesaj" olarak ayarlandı.

Kurallara çağrısından mesajlar kaldırırsanız ("add", ...

$("#newInputName").rules("add", { 
    required: true 
}); 

beklenen çalışmaları olarak değil, belli ki artık hiçbir özel hata iletileri var.

Ben SO benim dizimi doğru olduğunu belirten burada birçok örnek gördük herhangi bir öneriniz

BTW:.? jQuery Validation Eklentisi - v1.11.0 - 2/4/2013

+0

FYI: Ayrıca jquery.mobile ile birlikte kullanılıyor. $ ("# formName"). validate ({...}) $ (document) .on ("pageinit", ...) 'den çağrılırken, dinamik alanlar bir düğmenin tıklanmasıyla eklenir. Bu önemli mi, bilmiyor musun? –

+0

Lütfen bu bilgileri eklemek için OP'nizi düzenleyin. – Sparky

+0

@Sparky: Haklısın, # 670 numaralı sayısında düzeltildi. Yeni bir sürüm resmi olarak yayınlanana kadar bu düzeltmeyi kopyalarken çoğaltdım. Ayrıca # 674 sayısında da düzeltildi, ancak hangi sürenin yayınlanacağını bilmiyorum. # 674'te tanımlanmış 10 ve 11 numaralı sürümlerde (bu eksik kodun geri yüklenmesi sorunu da giderir) normalizeRaporlar'da normal kod çözülmez, fakat # 674'te önerilen düzeltme kodu geri yüklemez ve ayrıca # 670'den farklı değildir. –

cevap

20

Kodunuz gibi görünüyor yayınlarken, hatasız çalışıyor. hazır DOM ile

DEMO: PageInit & jQuery Mobile ile http://jsfiddle.net/UZTnE/

DEMO: http://jsfiddle.net/xJ3E2/

$(document).on("pageinit", function() { 

    $('#myform').validate({ // initialize the plugin 
     rules: { 
      field1: { 
       required: true 
      } 
     }, 
     messages: { 
      field1: { 
       required: "Enter something" 
      } 
     } 
    }); 

    $('[name*="field"]').each(function() { 
     $(this).rules('add', { 
      required: true, 
      messages: { 
       required: "Enter something else" 
      } 
     }); 
    }); 

}); 

HTML:

<form id="myform"> 
    <input type="text" name="field1" /> 
    <input type="text" name="field2" /> 
    <input type="submit" /> 
</form> 

BTW:

bu ...

ignore: null, // include hidden fields 

... olmalı

ignore: [], // include hidden fields 

Bkz: jQuery Validate - Enable validation for hidden fields

+0

Gözardı eden işaretçi için teşekkürler: []; hala orijinal sorun hakkında hala emin değilim; Ben asp.net cdn sürümü ile jquery.validate.min karşılaştırdım ve aynıdır. Buna daha yarın bakacağım ve size döneceğim. –

+2

@MartinRobins, sadece tarayıcınızda http://jsfiddle.net/xJ3E2/show/ açın ve "kaynağı görüntüle". Koduyla karşılaştırın. – Sparky

+0

Kodumu yansıtacak şekilde güncelledim. DOM sürümü (http://jsfiddle.net/UZTnE/2/) artık çalışmıyor; JQM sürümü hiç çalıştırılamıyor. Yine de farklı bir problem. –

4

$(document).ready(function(){ 
 
    $("#controlId").rules("add", { 
 
    required : true, 
 
    messages : { required : 'field is required.' } 
 
    }); 
 
});

Bu eski sorunun cevabı olarak
0

, kural nesnelerinin içindeki ölçümleri almak istiyorum. Kuralları ekledikten sonra

böyle mesajlar ekleyebilirsiniz:

var inputRules = $('input').rules(); 
inputRules.messages = {required: 'your message'}; 

enter image description here

İyi şanslar!