我正在使用.NET 2.0编写的Web应用程序,该应用程序在其页面上使用标准WebControls。它最终会迁移到4.x,但是现在我需要调整它的一些移动行为 - 我的第一个要求是利用HTML5 form input types以便从自定义屏幕键盘格式中受益。
我选择的解决此问题的方法是动态更改渲染元素的输入类型。我目前的局限是:
input
元素type
。HtmlInputControl
(当您向任何HTML元素添加runat='server'
时引用的类型)不支持type
属性的新值。type
属性添加到标准TextBox
控件中,它会将type
属性呈现两次。所以我采用了jQuery方法。我的想法是使用额外的标签nexttype实现一个有效的TextBox控件,如下所示:
<asp:TextBox ID="TextBox1" nexttype="phone" runat="server">
在运行时,它呈现如下:
<input name="TextBox1" type="text" id="TextBox1" nexttype="phone">
然后克隆渲染的元素,用适当的nextype对应替换它们的type属性,如下所示:
<input name="TextBox1" type="phone" id="TextBox1">
我想我的jQuery代码应该是这样的:
$(':not([nexttype=""])').clone().attr('type', selectedelement.attr('nexttype')).insertAfter(selectedelement).prev().remove();
selectedelement ,在这种情况下,只是一个占位符,我想象的是当前选择的&#39;选择中的元素。
基本理念是:
所以,是的,我吮吸jQuery。 =)
答案 0 :(得分:0)
找到我认为有点笨重的解决方案。基本上我遍历每个成员元素,操纵克隆并删除原始:
<script>
$(':not([nexttype=""])').each(
function () {
var _c = $(this).clone();
_c.attr('type', $(this).attr('nexttype'));
_c.removeAttr('nexttype');
_c.insertAfter($(this)).prev().remove();
});
</script>
仍然接受比这更优雅的解决方案。