سؤال

أحاول أن أجد أفضل طريقة للحصول على وظيفة مختلفة تحدث عند تغيير المربع الخاص بي.

هذا هو بلدي اختيار HTML

<select name="event-recurring">
<option selected="true">None</option>
<option value="daily">Daily</option>
<option value="weekly">Weekly</option>
<option value="monthly">Monthly</option>
</select>

مسج بلدي هو:

$('select[name=event-recurring] option:selected').change (function (){
//Will Do Something
});

كيف أخبرها أن تفعل شيئا مختلفا على القيم المختلفة؟

المحلول:

$('#event-recurring').change(function (){
    var $select = $(this);

    switch($select.val()) {
        case "daily":
           $('#recurring-options').remove();
           $("<div id='recurring-options' class='row'><label>Choose:</label>Choose a Date</div>").insertAfter('#recurring');
            break;
        case "weekly" :
        $('#recurring-options').remove();
              $("<div id='recurring-options' class='row'><label>Choose:</label>Weekly</div>").insertAfter('#recurring');
            break;
        case "monthly":
        $('#recurring-options').remove();
           $("<div id='recurring-options' class='row'><label>Choose:</label>Monthly</div>").insertAfter('#recurring');
            break;
        default:
            $('#recurring-options').remove();
            break;
    }    
});
هل كانت مفيدة؟

المحلول

$('select[name=event-recurring]').change (function (){
    var $select = $(this);

    switch($select.val()) {
        case "daily":
            // do something
            break;
        case "weekly" :
            // do something else
            break;
        default:
            // default case
            break;
    }    
});

أود أن أوصي إعطاء <select> معرف أيضا واستخدام ذلك لتحديده لأنه سيكون أسرع من الاسم

نصائح أخرى

متأكد من أن هذا سيعمل داخل وظيفة التغيير:

$('select[name=event-recurring]').change (function (){
    switch ($('option:selected', this).val()) {
      case "daily":
        // do something
        break;
      case "weekly":
        // do something
        break;
      case "monthly":
        // do something
        break;
    }
});

هل تعني أن تفعل شيئا مختلفا عن القيمة المختارة المختلفة؟

إذا كان الأمر كذلك، أعتقد أنه يمكنك استخدام الكائن "هذا" في الوظيفة لإحالة مصدر الحدث (حدد في هذه الحالة) ويمكنك التحقق من قيمتها باستخدام ".val ()" أو ".Text ()" ل تعرف على القيمة التي هي وعملية وفقا لذلك.

أتمنى أن يساعدك هذا.

استخدم عملية استقامة فرعية في القيمة المحددة واحصل على سمة القيمة الخاصة بها كتمييز لعملك:

$('select[name=event-recurring]').change( function() {
    var value = $(this).find(':selected').attr('value');
    if (!value) { // none
        do something
    }
    else if (value == 'daily') {
        do something else
    }
    ...
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top