更改输入的类型

时间:2013-08-15 14:25:27

标签: javascript jquery html

我想在点击按钮时更改输入的类型,但它不起作用。我试过这个:

$('.addPhoto').click(function(){
 $(this).siblings('.auto_image').prop("type", "file");
});

根本没有做任何事情。我在谷歌搜索并发现了这个: change type of input field with jQuery

它说可以用直接DOM做到这一点,但我如何选择带有DOM的兄弟类呢?

3 个答案:

答案 0 :(得分:3)

您可以将所有元素全部替换,但我不认为您只需更改类型属性,请参阅我的示例。

$('.addPhoto').on("click",function(){
    $(this).off("click").replaceWith("<input type='file' class='addPhoto'/>");
});

$('.addPhoto').one("click",function(){
    $(this).replaceWith("<input type='file' class='addPhoto'/>");
});

http://jsfiddle.net/ECzP4/

这是replaceWith() http://api.jquery.com/replaceWith/

的jQuery文档

答案 1 :(得分:1)

要获取dom对象,只需从jQuery集合中获取第一项:

var domObject = $(this).siblings('.auto_image')[0]

虽然似乎无法从text更改为file - http://jsfiddle.net/7HTgA/

所以我建议有两个输入,并根据需要显示/隐藏它们,而不是试图改变单个输入的类型。

答案 2 :(得分:0)

auto_image类的所有兄弟节点添加到类型 - 文件。

$(this).siblings('.auto_image').attr('type','file')