0

<select>在应用程序中显示的网页中有许多 html 元素(在UIWebView控制中)。其中一些允许多项选择。当用户更改列表中的某些内容时,我需要执行操作。对于多项选择,我需要在用户完成重新排列复选框并单击“完成”后执行操作。

它是如何在 iOS 6 中实现的(并且在那里完美运行):

<select onblur="alert('do something...');">...</select>
<select multiple='multiple' onblur="alert('do something...');">...</select>

iOS 7 问题:

<select onblur="alert('NOT ALWAYS WORK...');">...</select>
<select multiple='multiple' onblur="alert('NOT ALWAYS WORK...');">...</select>

<select onchange="alert('THIS WORKS');">...</select>
<select multiple='multiple' onchange="alert('WORKS BUT NOT AS EXPECTED');">...</select>

onblur不再可靠。它仅在下面有其他文本框或下拉列表时才有效。如果它是页面上唯一的下拉菜单/文本框,则不会触发。

我尝试替换onbluronchange,它有效,但仅适用于单一选择。当用户更改他的选择时触发多项选择onchange,而不是在他完成时(通过单击“完成”)。

任何想法如何解决 iOS 7 中的单个和多个下拉列表?

也许我错过了一些明显的东西?

4

1 回答 1

0

我找到了解决方案。如果在 iOS 7(不是 Safari)的 UIWebView 中加载以下 HTML,则该onblur事件不起作用:

<html>
<head>
    <meta name='viewport' content='initial-scale=1.0,maximum-scale=10.0'/>
</head>
<body>
<table style='height:80%'><tr><td>

    <select onblur="alert('blur')" >
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>
</td></tr></table>
</body>
</html>

重要组件:视口,定义了一些高度的表格,在此表格内选择。如果删除表格或删除高度样式或删除视口,则有效。onblur

我无法解释这种效果,但我只是删除了表格高度样式并且它起作用了。也许它可以帮助某人。

于 2013-10-08T16:56:56.317 回答