2013-12-20 5 views
3

давний lurker здесь, спрашивая мои первые публичные вопросы, потому что я действительно застрял.Javascript только один раз

Я работаю над размещенной платформой корзины покупок, поэтому у меня есть доступ к добавлению кода в определенные обозначенные div. У меня есть код javascript, который я вызываю извне (потому что inline является плохим, если только вам это нужно, не так ли?)

Итак, моя проблема: выпадающий список <select>, что у меня нет прямого доступа к изменению HTML и глупая платформа корзины покупок не давала ему идентификатор, задан только атрибут name.

мне нужно очистить <div id="result_div"> когда <select name="ShippingSpeedChoice"> выпадающий щелкнул поэтому у меня есть:

$("[name=ShippingSpeedChoice]").change(function(e) { $("#result_div").empty(); });

Он стреляет один раз, но это так. Мой вопрос: как мне заставить его стрелять КАЖДОЕ ВРЕМЯ нажимают <select name="ShippingSpeedChoice">?

Вот все соответствующие Javascript (в случае, если он предотвращает #result_div сбрасывались где-то):

$("[name=ShippingSpeedChoice]").change(function(e) { 
     $("#result_div").empty(); 
    }); 

    $("#btn_calc").click(function(e) {  /// onclick on Calculate Delivery Date button 

Заранее спасибо, любая помощь приветствуется!

+3

Вы хотите, чтобы он срабатывал каждый раз, когда они нажимают на него, даже если они не меняют значение? Привяжите его к событию 'click' вместо события' change'. – Barmar

+1

Вы должны работать над уменьшением кода в своем вопросе до минимума. Кроме того, вы оставили часть HTML. – j08691

+0

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

ответ

0

Я до сих пор не в состоянии использовать атрибут name для вызова функции, так что я нашел способ обойти его, используя id в td в ShippingSpeedChoice выпадающего списка был:

$("#DisplayShippingSpeedChoicesTD").change(function(e) { 
     $("#result_div").empty(); 

И он срабатывает каждый раз. Большое вам спасибо за все ваши отзывы. & Помощь. Мне все еще хотелось бы выяснить, как использовать атрибут name, а не id, но это будет головоломкой для другого дня!

1

Если вы хотите, чтобы что-то происходило каждый раз при нажатии элемента, используйте .click(), а не .change(). Последний только срабатывает, если они выбирают другое значение из меню, чем раньше.

$("[name=ShippingSpeedChoice]").click(function(e) { $("#result_div").empty(); }); 
+0

Привет, Barmar, я пробовал как .click, так и'.change' - честно ли он срабатывает на '.click' или' .change' Мне все равно, дело в том, что он срабатывает только один раз, и ему нужно запускать КАЖДОЕ время, когда есть изменение или щелчок на