2015-02-26 3 views
5

मैं एक डेटा-मास्क विशेषता विशेषता मुखौटा मूल्य को परिभाषित के साथ सभी इनपुट तत्वों सेट करने के लिए jQuery Masked Input plugin उपयोग कर रहा हूँ:आपत्ति नहीं है जब एक पाश में चल रहा है, लेकिन नहीं जब निष्पादित क्रमिक रूप से

इस एचटीएमएल को देखते हुए:

<input type='text' id="a" data-mask='999?999' /> 
<input type='text' id="b" data-mask='999' /> 

और इस स्क्रिप्ट:

$("input[data-mask]").each(function() { 

    var maskValue = $(this).data('mask'); 

    console.log($(this).attr('id') + ": " + maskValue); 

    //undefined error here on second iteration "b: 999" 
    //no issues if you remove the data-mask from one of the input elements 
    return $(this).mask(maskValue); 

}); 

दूसरी यात्रा एक त्रुटि फेंक दिया जाता है: कह रही है 'विभाजित', इस लाइन पर: "Uncaught TypeError अपरिभाषित कार्य नहीं है" है परिभाषित नहीं।

firstNonMaskPos = null, $.each(mask.split(""), function(i, c) { 

यह कोड हालांकि ठीक काम करता है, मास्क कोई समस्या नहीं है।

$('#a').mask('999?999'); 
$('#b').mask('999'); 

किसी को भी इस अजीब व्यवहार पर कोई रोशनी चमक सकते हैं?

Demo jsFiddle here

उत्तर

8

दूसरा एक अलगाव के बाद से से data()

number के रूप में आपके द्वारा लिखा गया की जा रही है() एक स्ट्रिंग विधि यह त्रुटि फेंक रहा है।

सरल फिक्स:

var maskValue = "" + $(this).data('mask'); 

या

var maskValue = $(this).data('mask').toString(); 
+0

आह, धन्यवाद! यह पूरी तरह से समझाएगा। – asawyer

1
.attr('data-mask') साथ

बदलें .data('mask')। किसी कारण से मेरे लिए ठीक काम करता है ... शायद jQuery संस्करण से संबंधित है?

संबंधित मुद्दे