2011-05-04 83 views
9

我有一个jQuery的移动网站与一个由4个引脚输入框组成的html表单。我希望用户能够在每个输入字段中输入一个别针,而不必按iphone键盘上的“下一步”按钮。我尝试了以下方法,尽管它似乎将焦点设置为第二个输入并插入值,但键盘消失,因此用户仍然必须通过轻击事件激活所需的输入。jQuery Mobile焦点键盘上的下一个输入

$('#txtPin1').keypress(function() { 
     $('#txtPin1').bind('change', function(){ 
      $("#txtPin1").val($("#txtPin1").val()); 
     }); 
     $("#txtPin2").focus(); 
     $("#txtPin2").val('pin2'); 
}); 

有,我应该分配给$( “#txtPin2”)不同的事件?

我试图实现http://jqueryminute.com/set-focus-to-the-next-input-field-with-jquery/这也是,但我发现它适用于android而不适用于iphone。

任何帮助,非常感谢它。

+0

让我明确了奖金:看来,iOS设备唐不接受焦点()和/或select()方法。该字段明显被选中/激活,但似乎没有“点击”或“点按”事件来激活设备键盘。 – 2013-03-29 11:30:53

回答

3

活生生的例子:http://jsfiddle.net/Q3Ap8/22/

JS:

$('.txtPin').keypress(function() { 
    var value = $(this).val(); 

    // Let's say it's a four digit pin number 
    // Value starts at zero 
    if(value.length >= 3) { 
     var inputs = $(this).closest('form').find(':input'); 
     inputs.eq(inputs.index(this)+ 1).focus(); 
    } 
}); 

HTML:

<div data-role="page" data-theme="b" id="jqm-home"> 
    <div data-role="content"> 
     <form id="autoTab"> 
      <label for="name">Text Pin #1:</label> 
      <input type="text" name="txtPin1" id="txtPin1" value="" class="txtPin" placeholder="Please enter Pin #1"/> 

      <br /> 
      <label for="name">Text Pin #2:</label> 
      <input type="text" name="txtPin2" id="txtPin2" value="" class="txtPin" placeholder="Please enter Pin #2"/> 

      <br /> 
      <label for="name">Text Pin #3:</label> 
      <input type="text" name="txtPin3" id="txtPin3" value="" class="txtPin" placeholder="Please enter Pin #3"/> 

      <br /> 
      <label for="name">Text Pin #4:</label> 
      <input type="text" name="txtPin4" id="txtPin4" value="" class="txtPin" placeholder="Please enter Pin #4" maxlength="4"/> 
     </form> 
    </div> 
</div> 
+1

感谢您的帮助。我尝试了你的代码,虽然焦点被设置为下一个输入,但是iphones键盘被隐藏,所以它仍然需要用户点击聚焦的输入框。该事件需要在关键帧上触发,以便在移动到下一个之前将值写入第一个输入。有没有办法触发下一个输入的按键? – user738175 2011-05-05 16:16:58

+0

我遇到了与上述相同的问题! – 2013-03-29 09:21:46

3

我试图在Android和它的作品。我无法在iPhone上查看它。 检查:http://jsfiddle.net/Q3Ap8/276/ [直接链接:http://fiddle.jshell.net/Q3Ap8/276/show/]

$('.txtPin').keydown(function() { 
    that=this; 
    setTimeout(function(){ 
     var value = $(that).val(); 
     if(value.length > 3) { 
     $(that).next().next().next().focus().tap(); 
     } 
    },0); 
}); 

是Android版其他的解决方案是: http://jsfiddle.net/Q3Ap8/277/ [http://jsfiddle.net/Q3Ap8/277/show]

$('.txtPin').keydown(function() { 
    that=this; 
    setTimeout(function(){ 
     var value = $(that).val(); 
     if(value.length > 3) { 
     $(that).next().next().next().click(); 
     } 
    },0); 
}); 
$('.txtPin').click(function() { 
    $(this).focus().tap(); 
}); 
+0

我要测试这个:)此刻我的iPhone崩溃。我想我从Cydia安装了一个不好的调整器,哈哈。 – 2013-03-29 10:38:18

+0

似乎没有在iPhone上工作。尝试了一些东西 – 2013-03-29 10:53:04

+0

我测试了另一个(见编辑)。 – Saram 2013-03-29 12:34:41