سؤال

لدي منسرة تنشئ ديناميكيا أحتاج إلى تغيير القيمة المحددة باستخدام JQuery.

<select class="txtfield country" id="ctl00_MainContentAreaPlaceHolder_personalInformation_country" name="ctl00$MainContentAreaPlaceHolder$personalInformation$country"> 
    <option value="FJ">FIDJI</option>
    <option value="FI">FINLANDE</option>
    <option value="FR" selected="selected">FRANCE METROPOLITAINE</option>
    <option value="GA">GABON</option>
</select>

طريقة واحدة هي استخدام معرف المنسدل بالكامل (Includng CTL00 ..):

$j("#ctl00_MainContentAreaPlaceHolder_DeliveryPersonalInformation_country option[value='FR']").attr('selected', 'selected'); 

هل هناك طريقة باستخدام CSS يمكنني العثور على العنصر وتغيير القيمة لأنني لا أفضل استخدام معرف التحكم الديناميكي؟

تعديل :

نسيت أن أذكر أن لدي 2 عناصر تحكم مخصصة على الصفحة مع نفس اسم المنسدلة.

لذلك التحكم المخصص 1 يولد:

<select class="txtfield ckgcountry" id="ctl00_MainContentAreaPlaceHolder_personalInformation_country" name="ctl00$MainContentAreaPlaceHolder$personalInformation$country">  ...
    <option value="ZW">ZIMBABWE</option>
</select>

والتحكم في العملاء 2 يولد:

<select class="txtfield country" id="ctl00_MainContentAreaPlaceHolder_personalInformation_country" name="ctl00$MainContentAreaPlaceHolder$personalInformation$country">
    <option value="FJ">FIDJI</option>
    <option value="FI">FINLANDE</option>
    <option value="FR" selected="selected">FRANCE METROPOLITAINE</option>
    <option value="GA">GABON</option>
</select>

لذلك باستخدام الرمز الذي يغير قيمة الاسم الأول فقط يجد في Dom، كيف يمكنني تغيير قيمة المرء الثاني ... هل هناك طريقة للقيام بذلك باستخدام CSS؟

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

المحلول

يبدو أنك تستخدم ASP.NET.

إنه حقا غير موثوق به لاستخدام معرف التحكم ASP.NET الكامل (بعد التجسيد) لأنه قد يتغير عند مرحلة ما. الجزء الوحيد من المعرف المضمون عدم التغيير هو الجزء الأخير من المعرف الذي تم تعريفه في خاصية معرف Control ASP.NET.

حدد هذا العنصر مع محدد البدل

// Unselect the currently selected item
$("select[id$='personalInformation_country'] option:selected").removeAttr("selected");

// Select the option at index 0
$("select[id$='personalInformation_country'] option:eq(0)").attr("selected","selected");

أو

// Select the option with value FR
$("select[id$='personalInformation_country'] option[value='FR']").attr("selected","selected");

ال $='personalInformation_country' سوف تتطابق مع كل الهوية المنتهي ب "personalInformation_country"، والتي يجب أن تكون واحدة فقط!

نصائح أخرى

هل يعني مثل هذا؟

$('select.country').val('FR');

سيؤدي هذا إلى تعيين التحديد لجميع عناصر المحول مع CSS Class "Country"

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

على سبيل المثال

$('form[name=myForm] select.country').val('FR');//presuming there is only one

من الصعب تحديدها دون رؤية بقية العلامات على الصفحة ولكن تحتاج إلى ضمان التنسيق حتى تحصل على عنصر المحدد الصحيح حتى يكون المعرف هو عادة أفضل رهان.

إذا تمكنت من استخدام المعرف الدقيق لأن هذا لديه أفضل perfrmance ولكن طلبت خيارات حتى الآن.

بعض الخيارات:

$('select.txtfield') سيجد جميع الاختيار مع الفصل Txtfield لذلك قد لا يكون فريدا.

رهان أفضل ربما $('select.txtfield.country') التي أفترضها فريدة من نوعها؟

أو "الاختراق" ل WebForms هو استخدام المنتهي - مع محدد

$('select[id$=personalInformation_country]')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top