0

アプリに(コントロールで)表示されるWebページに多数のhtml<select>要素があります。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もはや信頼できるものではありません。下に他のテキストボックスまたはドロップダウンがある場合にのみ機能します。それがページ上の唯一のドロップダウン/テキストボックスである場合、それは起動しません。

に置き換えonblurてみましたがonchange、動作しますが、単一の選択肢のみです。ユーザーが終了したときではなく、ユーザーが選択を変更したときに発生する複数の選択肢の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>

重要なコンポーネント: viewportさが定義されたテーブル、このテーブル内で選択します。テーブルを削除するか、高さスタイルを削除するか、ビューポートを削除すると機能します。onblur

この効果を説明することはできませんが、テーブルの高さのスタイルを削除するだけで機能します。多分それは誰かを助けます。

于 2013-10-08T16:56:56.317 に答える