我在 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>
用一个简单的 javascript 测试了 onkeypress
属性警报消息并且它有效但是当通过值传递进行修改时,没有返回值。所以我猜,错误从那里开始。
另一个问题是当 javascript部分有效,如何将“转换后的”字符串值返回给 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/