سؤال

لدي مجموعة من القيم الموجودة في تحميل الصفحة، على سبيل المثال [1193،1184،2372].

لدي sockdownchecklist التي يمكن أن تتخذ قيمة واحدة مثل $ (". DDL"). FormDowncheckList (). فال (1193)؛

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

لقد حاولت تكرير صفيفي لإنشاء سمة مرشح للتقدم كإبالغة: $ (". DDL [القيمة * =" 1184 "] [القيمة * = '9067'] [قيمة * = '14841']). AMP ("المحدد"، "المحدد")؛

ولكن هذا لا يعمل. لا أريد أن أضطر إلى تكرار جميع الخيارات الموجودة في DDL وتعيينها في المحددة إذا كانت تتطابق مع وجود مئات الخيارات وهذا لن يكون أداء جيد، خاصة إذا كان هناك خيارات 2 فقط ليتم نشرها.

أيه أفكار؟

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

المحلول

قم بإنشاء سلسلة من العناصر المحددة لإنشاء سلسلة محدد JQuery Selector ووضعها في وظيفة .find ():

var str = '';
var arrLength = selectedArray.length;
$.each(selectedArray, function(i){
   str += 'option[value*='+selectedArray[i]+']';
   if((i+1) != arrLength){
     str += ', ';
   }
});

$('.ddl').find("option[value*='1184'], option[value*='9067'], option[value*='14841']")
     .attr('selected','selected'); 

لاحظ أيضا، عند مقارنة المنسدلة بقيمة، كنت تبحث عن option عنصر في تحديد، وليس العنصر المحدد نفسه.

نصائح أخرى

حصلت عليه يعمل مع هذا ولكن الإجابة المذكورة أعلاه تبدو وكأنها حل جيد:

$.each(arr, function(i,s)
{
     $(ddl_id + ' [value*=\'' + s + '\']').attr('selected','selected');
});    

لست متأكدا والتي من المحتمل أن تكون أسرع ولكن الألغام نظافة صغيرة.

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