0

iOS デバイスで実行する webapp があり、特定のラベルをクリックして、ネイティブの datePicker を呼び出そうとしています。

私が持っている場合、<input type='date'>それに触れることでネイティブの日付ピッカーが開くことを知っています。

私の戦略は、この入力をラベルの下に「不透明度: 0」で配置し、ラベルのクリック イベントを入力のトリガー イベントにバインドすることでした。

$('#pickerLabel').bind('click',function () {
    $('#pickerInput').trigger('click');
});
$('#pickerInput').click(function () {
    alert("open Picker");
});

私が観察したのは、このメソッドはクリックイベントにバインドされた関数をトリガーするだけで (「ピッカーを開く」と警告します)、入力自体をクリックしたかのように、ネイティブ iOS の datePicker を開かないことです。

手伝って頂けますか?

PS: jquery モバイル フレームワークもプロジェクトに含まれており、入力でタップ イベントを使用してみましたが、まったく同じ結果が得られました。

4

2 に答える 2

1

WebKit タッチ イベントを開始しようとしましたか?

var touchEvent = document.createEvent('TouchEvent');
touchEvent.initTouchEvent(type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, touches, targetTouches, changedTouches, scale, rotation);

https://developer.apple.com/documentation/webkitjs/touchevent

(テストされていない) 例は次のようになります。

$('#pickerLabel').bind('click', function(){
    var touchEvent = document.createEvent('TouchEvent');
    touchEvent.initTouchEvent('touchstart', true, true, document.getElementById('pickerInput'), null, 0, 0, 0, 0, false, false, false, false, [], [], [], 1.0, 0.0);
});
于 2012-07-02T09:52:40.983 に答える
0

この問題を次の方法で解決できました。ラベルと入力の両方を 2 つの異なる div に配置しました。両方の div を重ねて配置し、入力 div の z-index を高くします (不透明度を 0 に維持します)。

このフォーラムの質問で CSS を使用しました: How to overlay one div over another div

これはまだ、目的の動作を行わない回避策にすぎません。

于 2012-07-02T10:49:30.540 に答える