在没有<form>和其他服务器端代码的情况下验证HTML5字段输入

时间:2015-10-21 15:39:09

标签: javascript jquery html5 parsing yahoo-finance

一直在使用jQuery和HTML5,但我只是简单的简单操作。 JSFiddle:http://tinyurl.com/oqmkyhr

我输入一个字段输入数字,当我按下一个按钮时,输入的数字四舍五入到小数点后两位。问题是,您不能使用或服务器端代码,它都在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上它什么也没做。 我究竟做错了什么?也许语法或我遗漏的东西?

5 个答案:

答案 0 :(得分:0)

private static readonly DataStore Instance = new DataStore();

private DataStore() { }

public static DataStore DATA_STORE
{
    get { return Instance; }
    set { }
}
  1. $('#validate').click(function(){ 1^ $('Amount').value = parseFloat(value).toFixed(2); 2^ 3^ 4^ $('h2').text(value); 5^ 不是validate
  2. Validate将匹配不存在的Amount个元素。 ID选择器以<Amount>
  3. 开头
  4. jQuery对象没有值属性。 DOM节点(如果它们是表单控件)可以。您可能正在寻找#
  5. val()是一个未定义的变量。您需要在使用它之前定义它。您可能希望value而不是$('Amount').val()
  6. 您没有与此选择器匹配的元素,标题元素应用于标题
  7. 所以你可能正在寻找的是:

    value
    $('#Validate').click(function() {
      var value = $('#Amount').val();
      value = parseFloat(value).toFixed(2);
      console.log(value);
      $('output').val(value);
    });

答案 1 :(得分:0)

如果要在jquery中按id选择某些内容,则需要使用#符号。在您的情况下$('#Amount');此外,您的网页上没有h2个元素,因此$('h2').text(value);将不会执行任何操作。此外,如果要在jquery中获取输入的值,则使用.val()函数,而不是.value

修正小提琴:http://jsfiddle.net/9kqbue5t/2/

答案 2 :(得分:0)

这是因为你有$('Amount').value。你错过了#&#39;#&#39;括号和引用值错误。但你有正确的想法。您可以尝试的是:

$('#validate').click(function(){
    var amount = $('#Amount').value();
        $('h1').text(parseFloat(value).toFixed(2));
    });
});

答案 3 :(得分:0)

您的选择器应为$(&#34;#Amount&#34;)。你错过了#。

此外,如果您尝试分配值,则应该使用:

$("#Amount").val( parseFloat(value).toFixed(2) );

我不确定你在哪里获得了你的价值&#39;变量来自,我没有看到它被分配到任何地方。

答案 4 :(得分:0)

我在您的代码中看到了许多语法和其他错误,请使用以下代码:

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