12

我正在尝试更改输入类型,特别是在单击输入后我需要更改type="text"type="date".

<input type="text" placeholder="DOB" id="dob" name="dob" />
<script>
    $("#dob").click(function () {
        $(this).attr('type', 'date');

    });
</script>

我想为 iphone App 完成此操作。这在 iphone 4 中不起作用。如何做到这一点?

4

6 回答 6

32

使用此代码:

<input type="text" placeholder="DOB" id="dob" name="dob"  />
<script>
   $("#dob").click(function(){
        $(this).prop('type', 'date');

  });
</script>

这是小提琴:http: //jsfiddle.net/HNKkW/

于 2012-08-08T06:40:17.100 回答
7

这是一个属性,所以prop()会这样做:

$("#dob").on('click', function(){
     $(this).prop('type', 'date');
});​

并记住将其包装在 document.ready 函数中!

小提琴

于 2012-08-08T06:24:49.717 回答
0

看到这个工作jsfiddle

由于浏览器中使用.attr. 请注意您从控制台收到的警告:

Uncaught Error: type property can't be changed 

您可以使用.prop()更改类型

$("#dob").on('click', function(){
    $(this).prop('type', 'date');
});​

我认为这里可能存在一些潜在的问题。用户不会对文本框类型的变化感到困惑吗?

如果可能的话,您应该在向用户显示之前尝试更改文本框的类型。

于 2012-08-08T06:29:36.793 回答
0

如果您使用早期版本的 Jquery

$('body').delegate('#dob','click',function(){
            $(this).attr('type', 'date');

      });

或者,如果您使用最新版本,请参阅 @adeno 的答案

于 2012-08-08T06:27:12.763 回答
0

我认为您的问题的正确解决方案是使用.focus.prop属性。

<script>
    $("#dob").focus(function () {
        $(this).prop('type', 'date');

    });
</script>
于 2014-01-26T08:36:41.253 回答
0

对我来说,直接在元素上使用prop是行不通的,但是经过大量的摆弄,这对我有用,所以我想分享一下,也许可以让别人头疼。

$(document).on('change', '#showPass', function () {
    if ($(this).is(':checked')) {
        $(this).parents('form').find('#passField').prop("type", "text");
    } else {
        $(this).parents('form').find('#passField').prop("type", "password");
    }
});
于 2016-09-13T04:53:30.700 回答