كيفية الحفاظ على القيم المتغيرة الثابتة في وظائف JavaScript على Postback؟

StackOverflow https://stackoverflow.com/questions/2146917

سؤال

لدي هذه العينة أدناه:

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">

    <script type="text/javascript">
function test(){

if (test.initialized=='undefined'){
    test.initialized = 'true';
    }

alert(test.initialized);

};
    </script>

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <asp:Button ID="btnPostBack" runat="server" Text="Post back" OnClientClick="test()" />
</asp:Content>

عندما أنقر بعد الظهر على الصفحة ، اكتشفت أن المتغير الذي تم تهيئته-والذي يتم تعريفه على الوظيفة نفسها-هو فقدان قيمته وتصبح "غير محددة" مرة أخرى.

هل من الممكن الحفاظ على تلك القيم الثابتة بمجرد تعريفها وجعلها غير متأثرة من أي ظهور منشور على الصفحة؟

هل كانت مفيدة؟

المحلول

أنا لا أعرف ما إذا كانت هذه هي مشكلتك أم لا، ولكن هناك خطأ في عام 2013 لاستخدام الاسم الأول / الأخير مع،.

لها مشكلة مستمرة. يمكن أن يكون السبب في الحصول على اسم المستخدم لحلها ولكن ليس الأسماء الخاصة به!

كمستخدم لاحظ مايكروسوفت:

اتفاقية Active Directory لدينا لسمة اسم العرض هي "اسم العائلة الاسم الأول". لاحظ الفاصلة بين الماضي وأول أسماء.

تستند أسماء تسجيل الدخول الخاصة بنا إلى الأحرف الأولى للأفراد؛ هذه هي 2 أو 3 أو 4 أو 5 شخصيات طويلة.

في SharePoint 2013، نقوم بمشاكل في القوائم، مع الناس منتقي ومعكرات البحث. يبدو أن الفاصلة في يتم التعامل مع اسم العرض كفاصل قائمة.

عند تحرير قائمة مع حقل شخص في تنسيق الشبكة، نحن تعاني من هذه المشاكل:

• لا يمكنك إدخال شخص من خلال "الاسم الأخير، الاسم الأول". انه يرمي خطأ: "المستخدم غير موجود أو ليس فريدا" بعض من الزملاء ليس لديهم "اسم العائلة"، وبالتالي لا فاصلة في عرضها و هذه الحصول على التحقق من صحة دون مشاكل.

• لا يمكنك نسخ شخص صحي مع ملء إلى صفوف أخرى

• لا يمكنك البحث عن شخص مع منتقي الناس واختر من نتائج البحث. لا يحمل التحديد التحقق من الصحة في الشبكة، ولكن يلقي الخطأ الذي لا يوجد عليه المستخدم، على الرغم من أنه كان اقترح من قبل الناس منتقي. (نحن نفترض أن الشخص مرت من People Conceer إلى مكون الشبكة المحدد عبر اسم العرض السلسلة أو سمة الاسم المميز التي تكون فيها الفاصلة تفسير بشكل غير صحيح.)

• إذا قمت بكتابة "اسم العائلة، الاسم الأول" والاسم الأول يتوافق مع الأحرف الأولى من تسجيل الدخول (سمة DN في م) من آخر الشخص، ثم يحدد الشخص الآخر.

• في تجديدات البحث، تظهر أسماء الأشخاص مع 2 فاصلة بدلا من 1. "الاسم الأخير، الاسم الأول"

http://social.technet.microsoft.com/a55569e7-dcf4-41a4-93fb-62adfc6798fb-62adfc6798fe/people-picker-Accounts-With-commas؟Forum= SharePointAdmin

هناك قرارا.

1 استخدم برنامج نصي مقدما بواسطة Microsoft لتغيير:

من:

الاسم الأول، الاسم الأخير

إلى

الاسم الأول الاسم الأخير

http://gallery.technet.microsoft.com / ScriptCenter / 71818859-13CA-42F8-99F9-2783F70984C7 /

أو

2 استخدم هذا التحديث:

مشكلات أن حزمة التحديث التراكمي هذا يعمل

• عند تعيين مهمة إلى مستخدم يحتوي على اسم العرض الخاص به فاصلة على موقع SharePoint Server 2013، تتلقى الخطأ التالي الرسالة:

المستخدم غير موجود أو ليس فريدا.

http://support.microsoft.com/kb/2825647 أحب

أيضا أن نلاحظ أن Microsoft لن تحدد المشكلة كما ستحمل مناطق أخرى ولكن يبدو أن الإصلاح يحل المشكلة!

نصائح أخرى

ربما تريد أن تفعل شيئًا كهذا. أعتقد أيضًا أنك تربك وظيفة الاختبار وكائن الاختبار.

var initialized = false;
function test(){
    if ( !initialized){
        initialized = true;
    }
};
            alert(initialized); // false
            test();
            alert(initialized); //true

سيتم إعادة تنفيذ JavaScript على Postback مع إعادة تحميل الصفحة (إلا إذا كنت تستخدم لوحات التحديث).

للحفاظ على قيمة جانبية للعميل ، اكتب القيمة في حقل مخفي ASP باستخدام JS ، ولا تجعل JavaScript إذا كان Ispostback صحيحًا حتى لا يتم الكتابة فوقه على Postback

أعتقد أن استخدام الظهر الجزئي هو وسيلة أيضًا.

إذا لم يكن ذلك ممكنًا ، فأنا فقط باستخدام برنامج Java Script ، أعتقد أن ملفات تعريف الارتباط يمكن أن تكون طريقة أخرى طالما لم يتم تحويلها من قبل المستخدم.

شعوري هو أفضل طريقة لتصميم الصفحة بطريقة لن أحتاج إلى تخزينها :)

يمكنك إضافة حقل مخفي وتعيين قيمة هذا؟ أعتقد بهذه الطريقة سيتم الحفاظ عليها في ViewState ، ويمكنك تحميل قيمتها مرة أخرى إلى متغيرك مع شيء مثل:

var p = '<٪ = blah.text ٪>' ؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top