2011-05-13 85 views
4

我有我想在移动和桌面使用jQuery Mobile的使用做一个输入字段。jQuery的改变输入型

这是一个数量选择现场,所以根据输入类型,用户只需要输入数字或点击增量1,2,3,......他想要的号码。

问题: 有没有办法通过按钮切换输入类型=“按钮”输入类型=“文本”?

事情是这样的:

$('.switchInputType').click(function() { 
    $(this).val() == "click" ? go_type() : go_click(); 
}); 
function go_type() { 
    $('.switchInputType').val('type'); 
    $('.inputElement').attr('type', 'text'); 
} 
function go_click() { 
    $('.switchInputType').val('click');          
    $('.inputElement').attr('type', 'button'); 
} 

这不起作用?我正在寻找其他想法如何实现这一目标?

是否有可能与生成的HTML的JQM篡改,

<input type="button" value="clickMe" /> 
在JQM

看起来是这样的:

<div class="ui-btn ui-btn-inline ui-btn-corner-all ui-shadow ui-btn-up-c" 
data-theme="c" aria-disabled="false"> 
    <span class="ui-btn-inner ui-btn-corner-all"> 
     <span class="ui-btn-text">clickMe</span> 
    </span> 
    <input class="inputElement ui-btn-hidden" type="button" value="clickMe" 
    aria-disabled="false" /> 
</div> 

感谢的想法!


这里是在jQuery Mobile的切换输入的完整代码:

$('.switchInputType').click(function() { 
    $(this).val() == "click" ? go_type() : go_click(); 
}); 
function go_type() { 
$('.switchInputType').val('type'); 
$('.switchInputType').prev('span').html('<span class="ui-btn-text">type</span><span class="ui-icon ui-icon-finger ui-icon-shadow"></span>'); 
$('.inputElement').each(function(index) { 
    $(this).parent('div').replaceWith('<input type="text" value="'+this.value+'" 
    name="'+this.name+'" id="'+this.id+'" value="'+this.value+'" class="inputElement 
    ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" />'); 
    }); 
} 
function go_click() { 
    $('.switchInputType').val('click'); 
    $('.switchInputType').prev('span').html('<span class="ui-btn-text">click</span><span 
    class="ui-icon ui-icon-finger ui-icon-shadow"></span>'); 
    $('.inputElement').each(function(index) { 
     $(this).replaceWith('<div class="ui-btn ui-btn-inline ui-btn-corner-all ui-shadow 
     ui-btn-up-c" data-theme="c" aria-disabled="false"><span class="ui-btn-inner ui-btn- 
     corner-all"><span class="ui-btn-text">'+this.value+'</span></span><input 
     type="button" value="'+this.value+'" name="'+this.name+'" id="'+this.id+'" 
     value="'+this.value+'" class="inputElement ui-btn-hidden" data-inline="true" 
     aria-disabled="false" /></div>'); 
     }); 
    } 
+0

相关http://stackoverflow.com/questions/1544317/jquery-change-type-of-input-field – thisgeek 2012-11-09 19:48:09

回答

10

这是不可能的,因为它是只读的更改类型。你可以做的是这样的:

JSFIDDLE

$('.clicker').bind('click', function() { 
    $(this).replaceWith('<input type="text" value="'+this.value+'" id="'+this.id+'">'); 
}); 
+0

工程平原=大! - 现在让我们看看我是否可以解决由JQM添加的额外HTML。非常感谢! – frequent 2011-05-13 14:40:33

+0

不客气!任何时候 – rsplak 2011-05-13 14:43:26

3
$('<input type="text" name="" id="" />').insertAfter('input[type=button]'); 
$('input[type=button]').remove(); 

//你可以收集u需要的属性,并将其分配给新的输入顶线,否则你永远不会得到它的,因为type=""安全原因工作属性