1

私はこのようなhtmlテーブルを持っています

<table width="100%">
    <tr>
        <td align="right">
             Email Address
        </td>
        <td  align="left">
            <div>
                <input type="email" data-theme="b" id="EmailAddress" />
            </div>
        </td>
    </tr>
</table>

入力内をクリックすると、td内のdiv内に入力があり、テキストボックスにカーソルが設定されますが、入力の境界線をクリックすると、tdの開始時にカーソルが設定されますが、入力には設定されません ここに画像の説明を入力

4

4 に答える 4

1

やあみんな私は最終的に解決策を見つけましたフォームの最初の入力に名前を設定し、次に任意の td をクリックするアクションで「td 境界線のみ」に設定しましたその最初の入力にフォーカスを設定しました

 $('td:has("input")').live('click', function () {
        try {
            var res = $(event.srcElement).attr('type');
            if (res == null) {
                var _input = document.getElementsByName("ToFocus")[0];
                _input.focus();
            }

        } catch (e) {
        }
    });

したがって、このコードの後、問題が発生すると、最初の入力に集中する必要があります:)

于 2013-01-02T14:19:18.797 に答える
1

これは私がこれまでに遭遇したことのない動作であるため (また、テスト用のデモが提供されていないため)、なぜこれが発生しているのかはわかりませんが、とにかく jQuery を使用しているため、簡単な回避策があります。

$('td:has("input")').on('focus', function(){
     $(this).find('input').focus();
});

事実上、要素を含む要素でfocusイベントが発生すると、その要素はフォーカスされているため、カーソルの他の場所ではなく に表示されます。ただし、正確に何が起こっているかに応じて、 に置き換える価値があるかもしれません。tdinputinputinputtdfocusclick

于 2013-01-01T12:26:39.983 に答える
0

問題はtdではなく、入力スタイルです。入力はmoz-borderedのようです...たとえば、border-radiusが5pxの場合、次のように入力フィールドに5pxのパディングを追加します。

css経由

input {
        -moz-border-radius: 5px;
        -webkit-border-radius: 5px;
        border-radius: 5px; 
/*add this*/
       padding-left:5px;
       padding-right:5px;
    }

jquery経由

$(document).ready(function(){
      $('div input').css('padding','0 5px');
 });
于 2013-01-02T15:04:12.817 に答える