не может сделать выбранную опцию по умолчанию - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть динамически сгенерированные опции select, которые добавляют выбранный атрибут к конкретной опции со значением id, и он генерируется по желанию, но, хотя у меня есть опция с атрибутом selected, я всегда получаю первую выбранную опцию. Я написал эту функцию для генерации параметров:

function getProjectType($selected = ""){
$terms = get_terms( array(
    'taxonomy' => 'project_type',
    'parent' => 0,
    'hide_empty' => false,
    'id' => 'project_type' ,
    'show_option_all' => false,
) );

?>
<?php if(!empty($terms)){?>

    <label class="fre-field-title" for="project-type"><?php _e('Please define your project type',MR_DOMAIN) ?></label>
    <div class="mr-select-box">
    <select name="project-type" id="project-type" class="mr-chosen-single" required>
    <option value="" disabled hidden><?php _e('Select project type',MR_DOMAIN) ?></option>
    <?php
    foreach($terms as $term){?>
            <option  id="<?php echo $term->slug.'-'.$term->term_id;?>" value="<?php echo $term->term_id ?>"<?php echo ($selected == $term->term_id) ? 'selected' : '' ?>><?php echo $term->name;?></option>
    <?php }?>
    </select>

    </div>

    <?php }
}

Эта функция должна принимать значение и добавлять выбранный атрибут к опции, имеющей это значение. Затем вызвал его и вот сгенерированные опции:

<select name="project-type" id="project-type" class="mr-chosen-single" required="">
    <option value="" disabled="" hidden="">select</option>
    <option id="project-type-image-147" value="147">147</option>
    <option id="project-type-video-145" value="145" selected="">145</option>
    <option id="project-type-website-146" value="146">146</option>
    <option id="project-type-audio-144" value="144">144</option>
</select>

Как вы можете видеть, опция 145 имеет выбранный атрибут, но мне нужно, чтобы он отображался как выбранный, но всегда получайте 1-й вариант как выбранный, хотя если я скопировал этот сгенерированный список в отдельный HTML-файл, он будет работать, почему не работает при динамическом генерируется.

1 Ответ

0 голосов
/ 18 ноября 2018

Как уже упоминалось другими, я не смог воспроизвести вашу проблему.Я скопировал ваш HTML-фрагмент и добавил JS, чтобы поиграть с ним.Возвращает ожидаемый результат - «145» и индекс 2

function byId(id){return document.getElementById(id)}

function testFunc()
{
  var testElem = byId('project-type');
  var selStr = testElem.value;
  var result = -1;
  var options = [...testElem.options];
  
  options.forEach( function(el,idx){if (el.selected) result = idx;} );
  
  var msg = `Val: ${selStr}, Index: ${result}`;
  alert(msg);
}

window.addEventListener('load', onWndLoaded, false);

function onWndLoaded(evt)
{
  testFunc();
}
<select name="project-type" id="project-type" class="mr-chosen-single" required="">
    <option value="" disabled="" hidden="">select</option>
    <option id="project-type-image-147" value="147">147</option>
    <option id="project-type-video-145" value="145" selected="">145</option>
    <option id="project-type-website-146" value="146">146</option>
    <option id="project-type-audio-144" value="144">144</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...