سؤال

انقر فوق موافق، كونه مطورا للخطش، هذه JavaScript Voodoo في صفحة ASP.NET (بناء على صفحة رئيسية) المقدمة على العميل كثيرا جدا بالنسبة لي، يبدو :-)

قررت محاولة استخدام JQUERY للتعامل مع بعض من جانب العميل وتطعن عناصر UI.

لدي اثنين أزرار راديو (rbnDoLimit و rbnDontLimit)، وثلاثة مربعات الاختيار (months12, months24, months36) - إذا قمت بالنقر فوق rbnDoLimit, أود أن تمكن كل ثلاثة منهم، إذا قمت بالنقر فوق rbnDontLimit, ، أحب مسح وتعطيل خانات الاختيار الثلاثة. يبدو بسيطا بما فيه الكفاية، أليس كذلك؟

لذلك قمت بتنزيلها وشملت JQuery 1.3.2 في My ASP.NET 3.5 WebForm - Works OK، يمكنني عرض "تنبيه" على الحدث $ (المستند).

يتم تقديم أزرار الإذاعة الخاصة بي في الصفحة

<input id="ctl01_cphContent_pnlBasicInfo_rbnDontLimit" 
       type="radio" name="ctl01$cphContent$pnlBasicInfo$LimitMVD" 
       value="False" checked="checked" />
<input id="ctl01_cphContent_pnlBasicInfo_rbnDoLimit" 
       type="radio" name="ctl01$cphContent$pnlBasicInfo$LimitMVD" 
       value="True" />

وخانات الاختيار الثلاثة كما:

<span class="dcDetails"><input id="ctl01_cphContent_pnlBasicInfo_months12" 
      type="checkbox" name="ctl01$cphContent$pnlBasicInfo$months12" /></span>
<span class="dcDetails"><input id="ctl01_cphContent_pnlBasicInfo_months24" 
      type="checkbox" name="ctl01$cphContent$pnlBasicInfo$months24" /></span>
<span class="dcDetails"><input id="ctl01_cphContent_pnlBasicInfo_months36" 
      type="checkbox" name="ctl01$cphContent$pnlBasicInfo$months36" /></span>

أنا تزينهم فئة CSS من dcDetails (أي غير موجود - ولكنه يهدف إلى استخدامه لاختيارها في جيس). أول شيء لاحظته هو أن فئة CSS لم يتم تطبيقها على بلدي <input> عناصر كما هو متوقع، ولكن على <span> عنصر حول <input>...... (اللغز الأول بالنسبة لي .....). على أي حال.....

أول محاولة مسجتي تبدو وكأنها هذه:

<script type="text/javascript">
    $(document).ready(
        $("#<%= rbnDontLimit.ClientID %>").click(function() {
            $(".dcDetails").attr('disabled','false'); 
        },
        $("#<%= rbnDoLimit.ClientID %>").click(function() {
            $(".dcDetails").attr('disabled','true'); 
        });
</script>

لا حظ - يمكنني النقر فوق الأزرار الراديوية كل ما أريده - لا يحدث شيء. أفترض أن هذا هو dcDetails CSS فئة على <span> حول مربعات الاختيار، أليس كذلك؟

حسنا - حتى تحصل على بعض الشيء، ولكن هذا يجب أن يعمل! الآن أنا أختار خانات الاختيار الثلاثة على وجه التحديد، من قبل ClientID - يجب أن يكون هذا دقيقا واحصل على العناصر المناسبة، فكرت:

<script type="text/javascript">
    $(document).ready(
        $("#<%= rbnDontLimit.ClientID %>").click(function() {
            $("#<%= months12.ClientID %>").attr('disabled','false'); 
            $("#<%= months24.ClientID %>").attr('disabled','false'); 
            $("#<%= months36.ClientID %>").attr('disabled','false'); 
        },
        $("#<%= rbnDoLimit.ClientID %>").click(function() {
            $("#<%= months12.ClientID %>").attr('disabled','true'); 
            $("#<%= months24.ClientID %>").attr('disabled','true'); 
            $("#<%= months36.ClientID %>").attr('disabled','true'); 
        });
</script>

مرة أخرى، لا حظ ......

إذن ما هيك أفتقده؟ لا يبدو أن كل هذه العروض العظمى Snazzy لا يمكن أن تساعدني في فهم السبب في أن هذا لا يعمل - وليس حتى قليلا .... أعتقد أنني في عداد المفقودين شيئا أساسيا للغاية، لكنني لا يبدو لي الشكل خارج، ما هو! :-)

مارك

تحديث:
لم يكن لديك الكثير من الحظ بعد :-( جردت أسفل عينة بلدي إلى صفحة HTML Barebones - لكنني أظل هذا الخطأ مرارا وتكرارا، بغض النظر عن نصائح مختلفة أحاول:

تفاصيل خطأ صفحة الويب

الرسالة: كائن لا يدعم هذه الخاصية أو خط الأسلوب: 3032 char: 6 الرمز: 0 URI: ملف: /// d: / المشروع

يبدو تقريبا أنه خطأ عميق داخل مستقر ....... أي أفكار؟

تحديث 2:
لقد بدأت أعتقد أنني أفعل شيئا خاطئا بشكل أساسي هنا .... افترضت أنه في الوثيقة. Ready () وظيفة، يمكنني ربط أحداث النقر على أزرار الراديو. نسيت شيئا ما هنا؟ هل سأحتاج إلى إنشاء وظيفة يمكنني الاتصال بها من حدث "On Click" من زر "زر الراديو" بدلا من ذلك؟ كل ما أحاول القيام به، حتى في محرر HTML الخاص بي (TopStyle 4) - هذا الخطأ "لا يدعم الكائن هذه الخاصية أو الطريقة" يبقي ظهرت طوال الوقت - مريح لا هذا ولا ذاك أخبرني أي كائن يشير إليه، ولا أخبرني ما هي العقار أو الطريقة غير معتمدة ........

أو أفعل شيئا خاطئا في محاولة ربط اثنين من وظائف معالج الأحداث في المستند. Ready ()؟

التحجيم أسفل، HTML الإصدار فقط متاح في http://jquery.bluenose.ch/jquerydemo.html. لأي شخص قد يكون مهتما - أتوقع أن أتمكن من النقر فوق زر الاختيار "Does Dond" ويقوم بتعطيل خانات الاختيار الثلاثة الموجودة أسفلها - لا تذهب :-(

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

المحلول

ألقيت نظرة على مثالك وكانت هناك بعض مشكلات بناء الجملة.

مثالك:

 $(document).ready(
    $('#rbnDontLimit').click(function() {
        $(".dcDetails :input").removeAttr('disabled');
    }),
    $("#rbnDoLimit").click(function() {
        $('.dcDetails :input').attr('disabled', 'true');
    }));

كنت في عداد المفقودين "الوظيفة () {" بعد جاهزة ومتابعة "}" في النهاية. يجب أن تكون الفاصلة بين الأحداث النقر فوق الفاصلة منقوطة. إزالة ": الإدخال" من محددات المسك. هذا يجب أن تعمل من أجلك:

   $(document).ready(function() {
        $('#rbnDontLimit').click(function() {
            $(".dcDetails").removeAttr('disabled');
        });
        $("#rbnDoLimit").click(function() {
            $('.dcDetails').attr('disabled', true);
        });
    });

نصائح أخرى

حاول تغيير:

$("#<%= months12.ClientID %>").attr('disabled','false')

ل:

$("#<%= months12.ClientID %>").attr('disabled','disabled')

و

$("#<%= months12.ClientID %>").attr('disabled','true')

ل:

$("#<%= months12.ClientID %>").attr('disabled','')

استخدم إجابة Kieron ثم ...

$("#<%= rbnDontLimit.ClientID %>").click(function() {
            $(".dcDetails").attr('disabled','false'); 
}

يمكن أيضا تغييرها إلى:

$("#<%= rbnDontLimit.ClientID %>").click(function() {
            $(".dcDetails > :checkbox").attr('disabled','disabled'); 
}

لتعطيل مربع الاختيار (أي تحكم)، استخدم ما يلي

$("#chkSomething").attr("disabled", "true")

لتمكين مربع الاختيار (أي تحكم)، أستخدم ما يلي

$("#chkSomething").removeAttr("disabled")

للإجابة على سؤالك،

<script type="text/javascript">
    $(document).ready(
        $("#<%= rbnDontLimit.ClientID %>").click(function() {
            $("#<%= months12.ClientID %>").removeAttr("disabled"); 
            $("#<%= months24.ClientID %>").removeAttr("disabled"); 
            $("#<%= months36.ClientID %>").removeAttr("disabled"); 
        },
        $("#<%= rbnDoLimit.ClientID %>").click(function() {
            $("#<%= months12.ClientID %>").attr('disabled','true'); 
            $("#<%= months24.ClientID %>").attr('disabled','true'); 
            $("#<%= months36.ClientID %>").attr('disabled','true'); 
        });
</script>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top