इसलिए मैंने यह jqueryui विजेट बनाया है। यह एक div बनाता है कि मैं त्रुटियों को स्ट्रीम कर सकता हूं। विजेट कोड इस तरह दिखता है:
$.widget('ui.miniErrorLog', {
logStart: "<ul>", // these next 4 elements are actually a bunch more complicated.
logEnd: "</ul>",
errStart: "<li>",
errEnd: "</li>",
content: "",
refs: [],
_create: function() { $(this.element).addClass( "ui-state-error" ).hide(); },
clear: function() {
this.content = "";
for ( var i in this.refs )
$( this.refs[i] ).removeClass( "ui-state-error" );
this.refs = [];
$(this.element).empty().hide();
},
addError: function( msg, ref ) {
this.content += this.errStart + msg + this.errEnd;
if ( ref ) {
if ( ref instanceof Array )
this.refs.concat( ref );
else
this.refs.push( ref );
for ( var i in this.refs )
$( this.refs[i] ).addClass( "ui-state-error" );
}
$(this.element).html( this.logStart + this.content + this.logEnd ).show();
},
hasError: function()
{
if ( this.refs.length )
return true;
return false;
},
});
मैं इसमें त्रुटि संदेश जोड़ सकता हूं, और पृष्ठ तत्वों के संदर्भ जो कि एक त्रुटि स्थिति में डाल दिए जाएंगे। मैं इसका उपयोग संवादों को मान्य करने के लिए करता हूं। "AddError" विधि में, मैं इस तरह से एकल आईडी, या आईडी की एक सरणी में पास कर सकता हूं:
$( "#registerDialogError" ).miniErrorLog(
'addError',
"Your passwords don't match.",
[ "#registerDialogPassword1", "#registerDialogPassword2" ] );
लेकिन जब मैं आईडी की एक सरणी में पास करता हूं तो यह काम नहीं करता है। समस्या निम्नलिखित पंक्तियों में है (मुझे लगता है):
if ( ref instanceof Array )
this.refs.concat( ref );
else
this.refs.push( ref );
वह कार्य क्यों नहीं करता है this.refs और Ref दोनों सरणियाँ हैं। तो क्यों काम नहीं करता है?
बोनस: क्या मैं इस विजेट में कुछ और गूंगा कर रहा हूं? यह मेरा पहला है।