我有一个限制文本框输入的要求。在页面加载时,转发器中的文本框会自动填充转发器中项目的纸箱数量。我在 OnItemCreated 方法中使用以下代码执行此操作:
txt.Text = DataBinder.Eval(e.Item.DataItem, "CtnQty").ToString();
我需要做的是重新输入(最好使用 Javascript),这样如果选择了超过默认值,该值会自动设置为下一个倍数。如果小于,则接受输入的任何值。因此,例如,如果默认值为 12 并输入 13,则需要将其自动更正为 24。如果输入 11,则该值保持为 11。
我一直在玩 Math.round 函数,像这样:
<input type="text" onblur="this.value=Math.round(parseInt(this.value)/12)*12" />
但我无法让它接受动态值。这样做会导致“服务器标记格式不正确”解析错误:
<input type="text" onblur="this.value=Math.round(parseInt(this.value)/<%# DataBinder.Eval(Container.DataItem, "CTNQTY") %>)*<%# DataBinder.Eval(Container.DataItem, "CTNQTY") %>" />
然后我会遇到如果小于默认值则接受,如果大于默认值则乘以的问题。我想为此我需要一个更详细的 Javascript 函数,但经过多次谷歌搜索后找不到我想要的东西。任何想法都将受到欢迎。
谢谢
最佳答案
首先,我会说使用 DataItem 的代码应该位于 ItemDataBound 中,除非您在每次回发时绑定(bind)数据,这并不总是好的做法。
关于格式不正确的标签,您可以尝试这样的操作,为您的 onblur 使用单引号:
<input type="text" onblur='this.value=Math.round(parseInt(this.value)/<%# DataBinder.Eval(Container.DataItem, "CTNQTY") %>)*<%# DataBinder.Eval(Container.DataItem, "CTNQTY") %>' />
关于 js 函数,也许这个例子会有一些帮助(顺便说一句:使用 jQuery 等库进行事件处理应该是更好的选择):
<html>
<body>
<script>
function verify(qty){
return function(event){event.target.value=Math.round(parseInt(event.target.value)/qty)*qty;};
}
</script>
<form>
<input type='text' onblur="(verify(12))(event)"/>
<input type='text' onblur="(verify(14))(event)"/>
</form>
</body>
</html>
关于javascript - ASP.NET - 将文本输入限制为动态值的倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071285/