在没有 <FORM> 和其他服务器端代码的情况下验证 HTML5 字段输入
Validate HTML5 field input without <FORM> and other server-side code
一直在摆弄jQuery和HTML5,但我被困在一个简单的简单操作上。JSFiddle here: http://tinyurl.com/oqmkyhr
我有一个字段输入,我在其中输入一个数字,当我按下按钮时,输入的数字四舍五入到小数点后 2 位。问题是,您不能使用或服务器端代码,并且它都在 1 个 html 文档中。
这是我所拥有的:
<html lang="en">
<head>
<meta charset="utf-8">
<title>Scotiabank Currency Converter</title>
<meta name="description" content="Converts currencies with Yahoo! Finance API">
<meta name="author" content="Kangze Huang">
<link rel="stylesheet" href="#">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<input type='number' id='Amount' value='Amount convert' step='0.01'>
<input type='button' id='Validate' value='Check decimals'>
<h1></h1>
<script>
jQuery(document).ready(function($) {
$('#validate').click(function(){
$('Amount').value = parseFloat(value).toFixed(2);
$('h2').text(value);
});
});
</script>
</body>
当我按下验证按钮时,它会变成 NaN(在 Chrome 和其他网络浏览器上(!在JSFiddle上,它什么都不做。我做错了什么?也许语法或我缺少的东西?
这是因为你有$('Amount').value
。您缺少"#"和括号,并且引用了错误的值。但你有正确的想法。您可以尝试的是:
$('#validate').click(function(){
var amount = $('#Amount').value();
$('h1').text(parseFloat(value).toFixed(2));
});
});
您的选择器应该是 $("#Amount"(。您缺少 #。
此外,如果您尝试分配值,则应使用:
$("#Amount").val( parseFloat(value).toFixed(2) );
我不确定您从哪里获得"值"变量,我没有看到它在任何地方被分配。
我在您的代码中看到许多语法和其他错误,请使用以下代码:
<html lang="en">
<head>
<meta charset="utf-8">
<title>Scotiabank Currency Converter</title>
<meta name="description" content="Converts currencies with Yahoo! Finance API">
<meta name="author" content="Kangze Huang">
<link rel="stylesheet" href="#">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<input type='number' id='Amount' value='Amount convert' step='0.01'>
<input type='button' id='Validate' value='Check decimals'>
<h1></h1>
<script>
jQuery(document).ready(function($) {
$('#validate').click(function(){
$('#Amount').val(parseFloat(value).toFixed(2)); //you missed # in this, normally in jquery we use .val() method to set the value of the input types
$('h1').html(parseFloat(value).toFixed(2)); // in the above code you have used h1 so here also use h1
});
});
</script>
</body>
$('#validate').click(function(){
1^
$('Amount').value = parseFloat(value).toFixed(2);
2^ 3^ 4^
$('h2').text(value);
5^
-
validate
不是Validate
-
Amount
将匹配不存在<Amount>
元素。ID 选择器以#
开头 - jQuery 对象没有值属性。DOM 节点(如果它们是表单控件(可以。您可能正在寻找
val()
-
value
是一个未定义的变量。您需要在使用它之前定义它。您可能想要$('Amount').val()
而不是使用value
。 - 您没有与此选择器匹配的元素,标题元素应用于标题。
所以你可能正在寻找的是:
$('#Validate').click(function() {
var value = $('#Amount').val();
value = parseFloat(value).toFixed(2);
console.log(value);
$('output').val(value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='number' id='Amount' value='Amount convert' step='0.01'>
<input type='button' id='Validate' value='Check decimals'>
<output></output>
如果你想
在jquery中通过id选择一些东西,你需要使用#
符号。在您的情况下$('#Amount')
;此外,您的页面上没有h2
元素,因此$('h2').text(value);
不会执行任何操作。此外,如果要在 jquery 中获取输入的值,请使用 .val()
函数,而不是 .value
。
固定小提琴:http://jsfiddle.net/9kqbue5t/2/
相关文章:
- 如何在有延迟的情况下对两个代码进行积分
- 在Widget代码中没有jQuery的情况下,用光标图像从左滑动到右
- 如何在不编写样板代码的情况下在Node中创建可重用函数
- 需要帮助编写在不使用toString的情况下将十进制转换为二进制的代码
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 如何在不停止HTML呈现的情况下放置停止代码的延迟
- 在不干扰HTML代码的情况下,将javascript文件导入javascript文件
- 在不使用按钮的情况下加载代码
- 在不使用jQuery的情况下解析json,并在HTML代码中添加值
- 在不更改大量代码的情况下重新构造Firebase JSON数据
- 如何在不接触类代码的情况下扩展我预先存在的javascript类
- 默认情况下在代码镜像中启动全屏
- 如何在不冻结浏览器的情况下执行大量javascript代码
- 如何在不向现有JavaScript函数添加代码的情况下向该函数添加回调函数
- GAS:如何允许其他人在不共享代码的情况下使用您的库
- 在这种情况下,如何访问我的JSON代码
- 在不使用jquery($symbol)knockout.js的情况下分离代码javascript
- 浏览器扩展:如何在没有冲突的情况下将javascript代码注入页面
- 如何在不插入整个代码的情况下嵌入现有的多级下拉菜单
- 如何在没有代码隐藏访问权限的情况下将自定义 HTML 属性添加到 ASP.NET 标签