2015-08-10 2 views
-1

У меня есть проблема в моем коде яваскриптакнопка должна быть нажата два раза, чтобы сделать действие

В настоящее время я работаю с Symfony2, и мне нужно использовать это действие Javascript

Я хочу, что если кнопка будет нажата, список будет заполнен, но проблема в том, что мне нужно дважды щелкнуть по нему.

, что мой код

function sellistt() { 
    $('#vallc').click(function() { 
     $('select#vall > option').prop('selected', true); 
    }); 
} 

А вот кнопка:

<button id="vallc" onclick="sellistt();" class="btn btn-primary">Validate</button> 

Любые предложения, пожалуйста?
Спасибо!

+0

С первым щелчком вы добавляете обработчик, а второй добавляет обработчик снова, а также выполняет событие 'click'. – putvande

ответ

1

Вы смешиваете 2 способа сделать что-то, когда вы нажимаете на кнопку.

С помощью вашего текущего кода при нажатии на кнопку вы вызываете функцию sellistt() (спасибо за атрибут onclick на вашем элементе кнопки).

И функция sellistt() добавляет EventListener к кнопке. Это EventListener ждет щелчок на кнопке, чтобы выполнить этот код:

$('select#vall > option').prop('selected', true); 

Так приведенный выше код будет выполняться только на второй мыши. Вам нужен только EventListener. Просто поместите эту часть вне функции:

$('#vallc').click(function() { 
    $('select#vall > option').prop('selected', true); 
}); 

И удалить атрибут onclick, это старая практика и вообще не нужен в вашем коде.

+0

Большое спасибо! –

1

Этого будет достаточно,

$('#vallc').click(function() { 
    $('select#vall > option').prop('selected', true); 
}); 

Удалить обработчик инлайн из разметки.


что плохого в вашем коде? При первом щелчке событие будет привязано к этому элементу, который идентифицируется селектором. при втором нажатии событие будет запущено в обычном режиме. но событие будет срабатывать столько раз, сколько событие зарегистрировано.

+0

не работает извините –

Смежные вопросы