2

これがスクリプトです

<script src="Scripts/jquery-1.7.min.js" type="text/javascript"></script>
   <script type="text/javascript">
   $(document).ready(function() {
        $('input[type="text"]').blur(function() {
        
            $(this).removeClass("focus");
            var a = $(this).context.id;

            if (a.indexOf('guest') > 0)
            {
                if ($(this).val()&&$(this).val()!=0)
                    {
                        //$(this).parent().parent().next().show();      
                        var b = $(this).parent().parent().next().children().find("textarea");
                        b.parent().parent().show();
                        b.addClass("focus");
                        b.focus();
                    }
                    
                                    
                else
                    {
                        $(this).parent().parent().next().children().find("textarea").val('');
                        $(this).parent().parent().next().hide();}       
            }
        });
    
    });
</script>

ここにHTMLがあります

<table width="620" border="1">
  <tr>
     <td>&nbsp;</td>
     <td style="width:40%"> Memebers $40 </td>
     <td style="width:40%"> Each guest $45 </td>
  </tr>
  <tr>
     <td><input name="breakfast1" type="checkbox" value="breakfast1" tabindex="0" /></td>
     <td>September 12, 2012</td>
     <td style="width:50%">How many guests
        <input type="text" maxlength="2" size="3" id="1guest" name="1guest" tabindex="1" />
     </td>
  </tr>
  <tr style="display:none">
     <td colspan="2">&nbsp;</td>
     <td>
        <textarea class="guests" style="width:300px;" id="1mguests" name="1mguests"  rows="4" tabindex="2">   </textarea>
        <br /><span></span>
     </td>
  </tr>    </table>    and so on<br/>

私が達成しようとしていること: 1guest テキスト フィールドからタブで移動するときに、入力フィールドに何かがあるかどうかを確認し、ある場合は、次の tr の非表示 (表示) を解除し、その tr のテキスト領域にフォーカスを設定します。

問題: 1guest 入力フィールドにゲスト数を入力し、そこから TAB キーを押すと、非表示の tr が OK を表示し、tr の textarea 入力はクラス .focus を取得しますが、foucs を取得しません。何が問題になる可能性がありますか? フォーカスの後に TAB が適用され、次の入力フィールドに移動するためですか? いずれにせよ、私が達成しようとしていることに対する解決策を提案できますか?

ありがとう

4

1 に答える 1

4

.show() が順番に実行されている可能性がありますが、 addClass() と focus() の後に終了します

これを試して:

b.parent().parent().show(function(){
     b.addClass("focus");
     b.focus();
});
于 2012-07-30T03:57:19.613 に答える