সুতরাং আমি এই jqueryui উইজেট তৈরি করেছি। এটি এমন একটি ডিভ তৈরি করে যাতে আমি ত্রুটিগুলি স্ট্রিম করতে পারি। উইজেট কোডটি এর মতো দেখাচ্ছে:
$.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;
},
});
আমি এতে ত্রুটি বার্তাগুলি যুক্ত করতে পারি এবং পৃষ্ঠার উপাদানগুলির উল্লেখ যা একটি ত্রুটি অবস্থার মধ্যে রাখবে। আমি এটি ডায়ালগগুলি যাচাই করতে ব্যবহার করি। "অ্যাডেরর" পদ্ধতিতে আমি একটি আইডি, বা আইডির একটি অ্যারে পাস করতে পারি:
$( "#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 এবং রেফ উভয় অ্যারে। তাহলে কনক্যাট কাজ করে না কেন?
বোনাস: আমি কি এই উইজেটে বোবা আরও কিছু করছি? এটা আমার প্রথম।