2011-05-05 50 views
2

有没有什么方法可以专注于文本框?Jquery专注于标签上的文本框点击

单击用户名标签时,用户名是否在以下方案中?

<tr> 
    <td valign="middle" class="loginText"> 
     <b> 
      <label for="UserName"> 
       UserName:</label></b> 
    </td> 
    <td valign="middle" > 
     <input type="tel" maxlength="6" value="" name="UserName" id="UserName" data-val-required="The User name field is required." 
      data-val="true" /><br /> 
     @Html.ValidationMessageFor(m => m.UserName) 
    </td> 
</tr> 

它适用于Mozilla和IE,但不适用于iPad Safari。基本上,我想iPad的键盘弹出当用户在这种情况下标签上点击即用户名:

这里是我的jQuery:

$("label[for]").click(function() { 
       var inputid = '#' + $(this).attr('for'); 
       alert(inputid); 
       $(inputid).focus(); 
      }); 
+1

改变输入类型为'text',可能是无效的'tel'类型是混淆浏览器。感谢nathan – 2011-05-05 06:42:57

回答

1

什么你试图做的事情根本行不通。没有用户触摸文本输入元素,就无法将iPad键盘拉起来。这可能是因为苹果不希望键盘变得恶意/侵入性并随时按需提供。

一种解决方法可能是让用户的点击目标成为文本字段,并为其设置样式,以便他们知道按下它。

+0

有趣的,谢谢@加里。这解释了为什么它可以在PC上运行,而不是在IPAD上运行。在windows平板上也一样吗? – 2011-05-05 10:06:07

+0

我不确定窗户石板,它可能工作。最好的办法是让朋友有一个尝试它:-) – 2011-05-05 10:50:40

+0

谢谢@加里,你能举一个例子:“一种解决方法可以使用户的点击目标文本字段,并设计它所以他们知道要按压它。“不确定你的意思。 – 2011-05-05 22:33:25

0

使用JQuery

$(document).ready(function() { 
    $('#mylabelid').click(function() { 
    $('#mytextboxid').focus(); 
    }); 
}); 
+0

,它似乎没有在iPad上工作。请看我提出的问题。 – 2011-05-05 06:40:46

0
$("label").click(function(e){ 
    if($(this).attr("for") == "UserName") 
    { 
     $("#UserName").focus() 
    } 
}) 
+0

我看了你的更新q现在 – Mayank 2011-05-05 06:43:04

0

http://v4.thewatchmakerproject.com/blog/how-to-fix-the-broken-ipad-form-label-click-issue/

if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/iPad/i)) { 
    $(document).ready(function() { 
     $('label[for]').click(function() { 
      var el = $(this).attr('for'); 
      if ($('#' + el + '[type=radio], #' + el + '[type=checkbox]').attr('selected', !$('#' + el).attr('selected'))) { 
       return; 
      } else { 
       $('#' + el)[0].focus(); 
      } 
     }); 
    }); 
}