[問題] event順序

作者: mobi76 (咻咻~)   2014-09-26 01:37:04
嗨大家好
先來段code
<script>
function show(){
document.getElementById('b').style.display = "";
}
function hide(){
document.getElementById('b').style.display = "";
}
</script>
<input id="a" value="" onclick="show()" onblur="hide()" />
<div id="b" style="display: none;">
<span onclick="document.getElement('a').value='1';">AAA</span>
<span onclick="document.getElement('a').value='2';">BBB</span>
</div>
我要做的就是點input會展開div b
再點span會將一個值填回
然後當沒有要用這個功能時div又會隱藏起來
不知道這樣說大家懂不懂呢
大概就像select一樣 點其他地方option就會消失
可是我現在遇到一個問題
我用onblur 那麼再點span時就會因為呼叫了hide()
而無法觸發span的click
請問這該如何解呢?
謝謝大家~~~
作者: mmis1000 (秋月戀楓)   2014-09-26 02:39:00
http://goo.gl/cIPzkw簡單來說就是span上的改用onmousedownhttp://jsbin.com/reyana/1/edit
作者: alog (A肉哥)   2014-09-26 02:41:00
問題就出在,既然onblur call了 hide functionspan事件為何還需要觸發? 因為已經藏起來辣span父元素就是div#b,既然 div#b 隱藏了 span 本來就不該有任何click事件被觸發,因為就點不到啊
作者: mmis1000 (秋月戀楓)   2014-09-26 03:08:00
http://jsbin.com/reyana/2 稍微說一下順序所以你要嘛就改聽滑鼠事件,要嘛就改用可focus元素在onblur裡判斷新目標是不是選項
作者: mobi76 (咻咻~)   2014-09-26 09:38:00
感謝my大~@alog:我想做出那樣的功能,但不太會寫,才生出奇怪的codeXD‘’

Links booklink

Contact Us: admin [ a t ] ucptt.com