تحقق مما إذا كان الخيار محددًا باستخدام jQuery، وإذا لم يكن محددًا، فحدد خيارًا افتراضيًا

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

سؤال

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

(يتم إنشاء التحديد باستخدام متاهة من وظائف PHP في تطبيق ورثته للتو، لذا يعد هذا حلًا سريعًا بينما أفكر في هذه الوظائف :)

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

المحلول

على الرغم من أنني لست متأكدًا مما تريد تحقيقه بالضبط، فقد نجح هذا الجزء من التعليمات البرمجية بالنسبة لي.

<select id="mySelect" multiple="multiple">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length) {
    $("#mySelect option[value='3']").attr('selected', 'selected');
  }
});
</script>

نصائح أخرى

لا حاجة لاستخدام jQuery لهذا:

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}

هذا السؤال قديم وله الكثير من المشاهدات، لذا سأطرح بعض الأشياء التي ستساعد بعض الأشخاص بالتأكيد.

للتحقق مما إذا كان عنصر التحديد يحتوي على أي عناصر محددة:

if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }

أو للتحقق مما إذا كان التحديد لا يحتوي على أي شيء محدد:

if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }

أو إذا كنت في حلقة من نوع ما وتريد التحقق من تحديد العنصر الحالي:

$('#mySelect option').each(function() {
    if ($(this).is(':selected')) { .. }
});

للتحقق مما إذا لم يتم تحديد عنصر أثناء وجوده في حلقة:

$('#mySelect option').each(function() {
    if ($(this).not(':selected')) { .. }
});

هذه بعض الطرق للقيام بذلك.لدى jQuery العديد من الطرق المختلفة لإنجاز نفس الشيء، لذلك عادةً ما تختار فقط الطريقة التي تبدو أكثر كفاءة.

إجابة لينسيوني هو ما أوصي به.يمكنك تغيير المحدد للخيار ('#mySelect option:last') لتحديد الخيار بقيمة محددة باستخدام "#mySelect option[value='yourDefaultValue']". المزيد عن المحددات.

إذا كنت تعمل على نطاق واسع مع قوائم محددة على العميل، فراجع هذا البرنامج الإضافي:http://www.texotela.co.uk/code/jquery/select/.قم بإلقاء نظرة على المصدر إذا كنت تريد رؤية المزيد من الأمثلة على العمل مع قوائم مختارة.

ها هي وظيفتي تغيير الخيار المحدد.يعمل مع jQuery 1.3.2

function selectOption(select_id, option_val) {
    $('#'+select_id+' option:selected').removeAttr('selected');
    $('#'+select_id+' option[value='+option_val+']').attr('selected','selected');   
}
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>

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

جافا سكريبت غير مزعجة

لقد جئت بالفعل عبر البرنامج المساعد تيكسوتيلا المذكورة، والتي اسمحوا لي أن حلها مثل هذا:

$(document).ready(function(){
    if ( $("#context").selectedValues() == false) {
    $("#context").selectOptions("71");
    }
});

انظر الى الفهرس المحدد التابع select عنصر.راجع للشغل، هذا شيء عادي من نوع DOM، وليس خاصًا بـ JQuery.

كان هذا نصًا سريعًا وجدته ناجحًا ....يتم تعيين النتيجة إلى التسمية.

$(".Result").html($("option:selected").text());

أنتم يا رفاق تفعلون الكثير من أجل الاختيار.ما عليك سوى الاختيار حسب القيمة:

$("#mySelect").val( 3 );
if (!$("#select").find("option:selected").length){
  //
}

لقد وجدت طريقة جيدة للتحقق مما إذا تم تحديد الخيار وتحديد الخيار الافتراضي عندما لا يكون كذلك.

    if(!$('#some_select option[selected="selected"]').val()) {
        //here code if it HAS NOT selected value
        //for exaple adding the first value as "placeholder"
        $('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
    }

لو #بعض_الاختيار ليس لديه الخيار المحدد الافتراضي بعد ذلك .فال() يكون غير معرف

$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
$("#select_box_id").children()[1].selected

هذه طريقة أخرى للتحقق من تحديد الخيار أم لا في jquery.سيعيد هذا قيمة منطقية (صواب أو خطأ).

[1] هو فهرس خيار مربع التحديد

قم بتغيير الحدث في مربع التحديد ليتم إطلاقه وبمجرد حدوث ذلك، ما عليك سوى سحب سمة المعرف الخاصة بالخيار المحدد: -

$("#type").change(function(){
  var id = $(this).find("option:selected").attr("id");

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});

كنت أبحث فقط عن شيء مماثل ووجدت هذا:

$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);

يؤدي هذا إلى العثور على جميع قوائم التحديد في الفصل الدراسي التي ليس لديها خيار محدد بالفعل، وتحديد الخيار الافتراضي ("2" في هذه الحالة).

حاولت استخدام :selected بدلاً من [selected], ، لكن ذلك لم ينجح لأنه يتم تحديد شيء ما دائمًا، حتى لو لم يكن هناك شيء يحمل هذه السمة

إذا كنت بحاجة إلى التحقق بشكل صريح من كل خيار لمعرفة ما إذا كان أي خيار لديه السمة "المحددة"، فيمكنك القيام بذلك.وإلا باستخدام option:selected ستحصل على قيمة الخيار الافتراضي الأول.

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top