2012-07-06 4 views
4

Привет, эксперт, у меня есть одна проблема, и мне нужна ваша помощь.Событие onClick не работает в браузере Safari, но работает Хорошо в браузере IE/FF/Chrome/Opera?

Я использую javascript onClick event, он хорошо работает с браузером IE/FF/Chrome, но он не работает в браузере Safari, я потратил 2 дня на это, но не смог его решить, поэтому мне нужна ваша помощь, это слишком срочно для меня.

код, который я использую следующие: (? Правый)

heartSelectHandler = { 
    clickCount : 0, 
    action : function(select) 
    { 
     heartSelectHandler.clickCount++; 
     if(heartSelectHandler.clickCount%2 == 0) 
     { 
      selectedValue = select.options[select.selectedIndex].value; 
      heartSelectHandler.check(selectedValue); 
     } 
    }, 
    blur : function() // needed for proper behaviour 
    { 
     if(heartSelectHandler.clickCount%2 != 0) 
     { 
      heartSelectHandler.clickCount--; 
     } 
    }, 
    check : function(value) 
    { 
     alert('Changed! -> ' + value); 
    } 
} 

<select onclick="javascript:heartSelectHandler.action(this);" onblur="javascript:heartSelectHandler.blur()" id="heart" data-role="none"> 
    <?php for ($i = 20; $i <= 150; $i++): ?> 
    <option value="<?php echo $i; ?>"><?php echo $i; ?></option> 
    <?php endfor; ?> 
</select> 
+4

не могли бы вы форматировать Ваш код немного лучше? Так что нам не нужно ехать на 50 км к востоку, чтобы прочитать его. –

+0

Переформатированный код в вопросе для лучшей читаемости .. :) – techfoobar

+0

попробуйте удалить 'javascript:' из события on click. Храните только вызов функции. – d4rkpr1nc3

ответ

1

Использование OnChange вместо OnClick, так как это будет гарантировать, что изменения в выборе чисто с помощью клавиатуры будет также инициировать событие, как ожидается, ,

т.е. использование:

onchange="javascript:heartSelectHandler.action(this);" 

вместо:

onclick="javascript:heartSelectHandler.action(this);" 
+0

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

+0

Хорошо. Да, onchange будет срабатывать только при изменении значения. – techfoobar

+0

спасибо techfoobar –

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