应用于 html5 数值字段的 javascript 的错误行为
Wrong behaviour of javascript applied to html5 numeric fields
我是Web开发的新手,在尝试应用相当简单的javascript代码时遇到了错误。假设我们有两个数字 html5 字段:
<label for="f1">First field</label>
<input type="number" name="f1" id="f1" min="0" step="1" value="100"/>
<label for="f2">Second field</label>
<input type="number" name="f2" id="f2" min="0" step="1" value="100"/>
现在我想为这些字段应用两个简单的规则。
当第一个字段的值更改时,此值(从第一个字段开始)将设置为第二个字段:
$("#f1").bind("change paste keyup", function() {
$("#f2").val($("#f1").val()); });
这很好用。
第二个字段的值不能超过第一个字段的值:
$("#f2").bind("change paste keyup", function() {
var f1_ = $("#f1").val();
var f2_ = $("#f2").val();
var f2_new = (f2_ > f1_)? f1_ : f2_;
$("#f2").val(f2_new); });
它适用于一些错误 - 当第二个字段的值为 10、100、1000、10000 等时,我尝试减小它,新值将等于第一个字段的值。在此处查看示例
即使输入类型是数字,从 .val() 返回的值的类型也是一个字符串。 要解决此问题,只需使用 Number(f1_)
和 Number(f2_)
转换回数字。这是一个小提琴。看到在转换之前,console.log( typeof f1_ )
行日志string
。
$("#f1").bind("change paste keyup", function()
{
$("#f2").val($("#f1").val());
});
$("#f2").bind("change paste keyup", function()
{
var f1_ = $("#f1").val();
var f2_ = $("#f2").val();
console.log( typeof f1_ );
var f2_new = (Number(f2_) > Number(f1_))? f1_ : f2_;
$("#f2").val(f2_new);
});
我喜欢将+
符号放在字符串前面以将其转换为数字。请参阅以下修复:http://jsfiddle.net/fXnFF/531/
相关文章:
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 将字符串拆分为数组时出现JavaScript错误
- 处理JSON字符串会导致JavaScript错误
- 使用AJAX在剑道网格中分组时出现Javascript错误
- Ajax对web URL的调用导致javascript错误
- 为什么当我尝试在Ionic中使用列表时会出现此JavaScript错误
- 可以't解决Javascript错误
- django出现神秘的javascript错误
- JavaScript错误无效的限定符
- 使用主题运行时portlet liferay时出现Javascript错误
- 绑定函数时在IE7中未实现Javascript错误
- Javascript错误:未捕获引用错误:未定义编辑
- eventListener出现JavaScript错误
- sharepoint站点的internet explorer中出现Javascript错误
- LoadControl HttpCompileException自定义服务器控件JavaScript错误
- 销毁Bootstrap popover时出现Javascript错误
- 无法加载Javascript错误XMLHttpRequest
- 使用JSON.parse时出现无效字符javascript错误
- 修复Javascript错误
- 模板字符串上的netbeans javascript错误(backticks)