我目前正在为我的公司(Leader Technologies)开发一个用于注册Logitech产品的Javascript程序。其URL是: http://wwwtest.onlineregister.com/logitechreg/
我的程序在我尝试过的除Safari 4之外的所有单个网络浏览器(包括IE 6)上看起来都很好。在Safari 4上,在选择了位置,语言和产品类别后,点击实际产品菜单时( id = WHPR),显示负责显示产品的div,但下拉选项仍然可见。在所有其他浏览器上,隐藏中的下拉列表和可能的选择(这是预期的行为。)
直接,我的问题是我可以在Safari 4中成功隐藏此下拉列表而不会完全清空下拉列表,然后仅使用所选值重新填充它吗?如果可能的话,我宁愿不这样做,但如果这是实现我的目标的唯一方法,那么我可以另外更改网站。
我认为问题出在我在<select>
上设置听众的地方:
<select id="WHPR" class="ui-formulate-ignore" style="width: 280px; visibility: visible;" onchange="whprChanged(this);" onfocus="displaySelector(form, document.getElementById('WHPR')); document.getElementById('imageHolder').focus(); this.blur();" name="WHPR">
非常感谢您抽出宝贵时间来帮助我。我非常感谢本网站提供的所有帮助。
-Brian J. Stinar -
答案 0 :(得分:5)
不要挑选你的风格,但像你正在做的那样将听众内联在一起并不是很干净。为什么不利用jQuery处理任何浏览器差异的能力?您引用的页面已经加载它。
答案 1 :(得分:1)
我认为这是Safari中的某种错误 - 例如,如果您为DIV执行.focus()
nof但是对于另一个输入元素(如文本字段),那么在点击选择框之后两者都会有焦点(或者实际上,焦点将保留在选择框中,文本框似乎只有比平时更厚的边框才有焦点。
无论如何快速和肮脏的methot实现目标将是从页面中删除选择框(显示:无)然后将其恢复(显示:内联)。
使用以下命令替换this.blur()
this.style.cssText='display:none';var select = this; window.setTimeout(function(){select.style.cssText='display:inline';},1);
如果您不使用延迟,则它不起作用 - 元素的删除和检索需要在不同的范围内。