PDA

View Full Version : سوال: تداخل دو تابع



soroush.r70
چهارشنبه 11 تیر 1393, 18:23 عصر
من باید از یک افکت دوبار در یک صفحه استفاده کنم چطور میشه از یه تابعش دوبار استفاده کرد و دو تا تابعش تداخل پیدا نکنن ممنون




$.fn.formToWizard = function(options) {
options = $.extend({
submitButton: ""
}, options);

var element = this;


var steps = $(element).find("fieldset");
var count = steps.size();
var submmitButtonName = "#" + options.submitButton;
$(submmitButtonName).hide();


// 2
$(element).before("<ul id='steps'></ul>");


steps.each(function(i) {
$(this).wrap("<div id='step" + i + "'></div>");
$(this).append("<p id='step" + i + "commands'></p>");


// 2
var name = $(this).find("legend").html();
$("#steps").append("<li id='stepDesc" + i + "'>مرحله " + (i + 1) + "<span>" + name + "</span></li>");


if (i == 0) {
createNextButton(i);
selectStep(i);
}
else if (i == count - 1) {
$("#step" + i).hide();
createPrevButton(i);
}
else {
$("#step" + i).hide();
createPrevButton(i);
createNextButton(i);
}
});


function createPrevButton(i) {
var stepName = "step" + i;
$("#" + stepName + "commands").append("<a href='#' id='" + stepName + "Prev' class='prev'>< مرحله قبل</a>");


$("#" + stepName + "Prev").bind("click", function(e) {
$("#" + stepName).hide();
$("#step" + (i - 1)).show();
$(submmitButtonName).hide();
selectStep(i - 1);
});
}


function createNextButton(i) {
var stepName = "step" + i;
$("#" + stepName + "commands").append("<a href='#' id='" + stepName + "Next' class='next'>مرحله بعد ></a>");


$("#" + stepName + "Next").bind("click", function(e) {
$("#" + stepName).hide();
$("#step" + (i + 1)).show();
if (i + 2 == count)
$(submmitButtonName).show();
selectStep(i + 1);
});
}


function selectStep(i) {
$("#steps li").removeClass("current");
$("#stepDesc" + i).addClass("current");
}


}





فراخوانیش هم


$(document).ready(function(){ $("#SignupForm").formToWizard({ submitButton: 'SaveAccount' })});

MMSHFE
پنج شنبه 12 تیر 1393, 10:06 صبح
فکر کنم سؤالتون هیچ ارتباطی به PHP نداره. فکر نمیکنید جای مناسبی تاپیک نزدین؟

soroush.r70
پنج شنبه 12 تیر 1393, 10:40 صبح
واقعا عذر میخوام ازتون که جای نامناسبی تاپیک زدم چون کارم گیر بود خواستم از دوستان عزیز کسی میتونه لطف کنه مشکل منو حل کنه بازم پوزش و ممنون

مهرداد سیف زاده
پنج شنبه 12 تیر 1393, 12:35 عصر
با توجه به نظر مهندس شهرکی درباره اشتباه بودن تاپیک و حذف نکرن آن
دقیق متوجه نشودم الان چه اروری میده؟ شاید ارور نمیده و فقط افکت ها با هم قاطی میشه؟ یا کلا نباید در یک صفحه از این افکت استفاده کرد؟

soroush.r70
جمعه 13 تیر 1393, 00:03 صبح
ممنون دوست عزیز ببینید این کدهای بالا برای یک فرم هستش که من وقتی از اون فرم دوبار در یک صفحه استفاده میکنم فرم دوم کار نمی کنه وقتی کدهای بالا رو هم دوباره مینویسم بازم عمل نمیکنه حالا چطور میشه کدهای بالا رو طوری نوشت که وقتی دو فرم استفاده شد در سک صفحه بازم عمل کنه

کد کامل افکت در فایل پیوست هستش:

مهرداد سیف زاده
جمعه 13 تیر 1393, 10:46 صبح
من اینو اجرا کردم و خطا نداشت.
ولی وقتی دو تا فرم درست کردم با هم تداخل پیدا کردن و step های فرم ۱و۲ رو با هم در بالای صفحه نشون داد
البته انتظار داشتم شما کدی که خطا میده رو بزارید.
همچنین بعضی از پلاگین های jquery قابلیت استفاده در یک صفحه رو ندارن. مثلا در همین کد مراحل step توسط پلاگین کدهای html به صفحه وارد میشه و این چنین کدهایی چون از dom فعلی صفحه استفاده نیمکنن و خودشون کد html به صفحه اضافه میکنن باعث تداخل میشه. علتش اینه که مثلا برای step کردن از class استفاده کرده. وقتی بار اول پلاگین رو برای فرم ۱ صدا میزنید اون مراحل step رو بصورت کلاسهای داخلی خودش به صفحه وارد میکنه. و وقتی پلاگین رو برای بار دوم صدا میرنید باز هم همون step ها رو با کلاسهای خودش صدا میرنه و این طور میشه در یک صفحه دو تا فرم دارید که باید دو تا step جدا داشه باشن ولی چون این پلاگین تمام step رو از کلاس گرفته عملا شما stepهای شبیه به هم دارید و تداخل پیدا میکنن.
در کل شما میتونید کلا پلاگین رو دوباره نویسی کنید و قابلیت پشتیبانی بیش از چند بار رو بهش اضافه کنید و یا اگر کارتون گیره و اطلاعات چندانی از jquery ندارید کل فانکشن پلاگین رو کپی ازش بگیرید و با یک اسم دیگه بسازید. یعنی کلا دو تا پلاگین جدا از هم باشن و هر کدوم رو بصورت جداگانه در یک فرم فراخوانی کنید

soroush.r70
جمعه 13 تیر 1393, 15:18 عصر
با تشکز از شما دوست عزیز متاسفانه من هیچ سررشته ای از جی کئوری ندارم میتونید لطف کنید یه مثالی بزنید دقیقا چطور میتونم دوتا فرم داشته باشم در یک صفحه ممنون

MMSHFE
جمعه 13 تیر 1393, 20:48 عصر
یکبار گفتم این سؤال ربطی به این تالار نداره و باید توی تالار جاوا اسکریپت دنبال کنید. باز دارین همینجا موضوع رو ادامه میدین؟ حتماً باید زور باشه تا قوانین رعایت بشه؟ تاپیک بسته شد.