javascript - ASP.NET - 将文本输入限制为动态值的倍数

标签 javascript asp.net textbox onblur

我有一个限制文本框输入的要求。在页面加载时,转发器中的文本框会自动填充转发器中项目的纸箱数量。我在 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 等库进行事件处理应该是更好的选择):

http://jsfiddle.net/nqCGp/

<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/

相关文章:

javascript - 当文本输入有焦点时淡化正文背景

c# - 无法开始监视对 'C:\********\global.asax'的更改

c# - 如何在C#中将数据从文本框插入到datagridview

.net - 如何从 ASP.NET 中的soap异常中提取内部异常?

asp.net - 如何动态分配 asp.net 控件 ID

C# 将 ffmpeg 输出实时重定向到文本框

Javascript文本框输入和简单数学

javascript - Ajax 调用后的可点击行

javascript - 我正在努力使用Javascript和XMLHTTPRequest从网页保存音频文件

javascript - 是否有 HQMF 到 QRDA cat 3 计算的简单示例?