javascript - 使用 javascript 在 HTMLInput 的字符串上添加一个字符

标签 javascript asp.net

我在 ASP:Repeater 中有这个 htmlInput,我想将其格式化为时间格式(例如:13:39)它的按键。到目前为止,我在转发器数据绑定(bind)中有这段代码:

Protected Sub rpt_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rpt.ItemDataBound
        If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
            Dim txt As HtmlInputText = DirectCast(e.Item.FindControl("txtKmRun"), HtmlInputText)
            If txt IsNot Nothing Then
                txt.Attributes.Add("onkeypress", "return kmRun('" & txt.Value & "');")
            End If
        End If
End Sub

..这是在 JavaScript 中:

<script>
        function kmRun(myValue) {
            String x = myValue;
            x = x.substring(0, 2) + ":" + x.substring(2, x.length());
            alert(x); //alert to test display but is not working
            //HOW TO PASS x VALUE TO BACK TO THE TEXTBOX?
        }
</script>

用一个简单的 测试了 onkeypress 属性警报消息并且它有效但是当通过值传递进行修改时,没有返回值。所以我猜,错误从那里开始。

另一个问题是当 部分有效,如何将“转换后的”字符串值返回给 htmlInput?对于此问题,是否还有其他不使用 PostBack 的解决方案?

谢谢。

===================

这是工作代码:

Protected Sub rpt_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rpt.ItemDataBound
        If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
            Dim txt As HtmlInputText = DirectCast(e.Item.FindControl("txtKmRun"), HtmlInputText)
            If txt IsNot Nothing Then
                txt.Attributes.Add("onkeypress", "return kmRun(this);")
            End If
        End If
End Sub

<script>
        function kmRun(x) {
            if (x.value.length > 2) {
                x.value = x.value.substring(0, 2) + ":" + x.value.substring(2, x.value.length); 
            }
        }
</script>

最佳答案

你不需要声明另一个变量,你可以使用myValue参数。

我建议使用 onchange="kmRun(this)" 而不是 onkeypress="kmRun(this)",因为您必须更改内容,以最终被代码格式化。

通过this,您可以获得textBox控件的所有属性。

你可以在你的 javascript 代码中尝试这样的事情:

function kmRun(control) {
  control.value = control.value.substring(0, 2) + ":" + control.value.substring(2, control.value.length);
}
<input id="txt" type="text" onchange="kmRun(this)" value="" />

关于javascript - 使用 javascript 在 HTMLInput 的字符串上添加一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32982469/

相关文章:

javascript - Jquery 按属性查找元素集并将它们包装在新的 div 中

javascript - 计算 p :inputTextarea instead of characters remaining 中使用的字符数

c# - 查询返回NULL值

javascript - 在 asp.net web 表单中单击按钮时避免回发

javascript - Angularjs ng隐藏动画不起作用

javascript - 具有随机 X、Y 和 Angular 2D 旋转 jQuery

javascript - JS 在字符串中显示特殊的 ascii 字符

c# - .NET 网站崩溃

.net - 构建自定义 "ClaimsAuthorizationManager"Windows Identity Foundation 类的好方法是什么?

c# - 将 aspx 页面保存为 jpeg 并在 C# 中将其作为电子邮件发送