0

我正在尝试在表单字段下方提供一条消息。该消息将取决于在两个字段中输入的内容。

我将如何制作它以便它使用两个字段实时计算并通过计算传递它?

这是小提琴http://jsfiddle.net/6qSeH/

我正在使用它来获取文档值

var input1 = document.getElementById("input-mini");
var input2 = document.getElementById("input-mini2");

最后运行这个函数

yearCalculator();
4

3 回答 3

2

您的代码中有许多缺失的部分。

首先,您完全使用 javascript编写代码并尝试使用 jQuery 语法。那么您希望它如何工作。

jQuery to set HTML     ---   msg.html(value);
javascriptto set HTML  ---   msg.html = value;

其次,当您检查 Not a Number 时

它应该看起来像

val1 === NaN // 它不是字符串 而且这永远不会起作用,因为 NaN 永远不等于 NaN

改用isNaN()方法

第三

<div class="message"></div>

应该是

<div id="message"></div>

接下来,您需要将事件分配给您的输入。否则它只会在页面第一次加载时起作用..

input1.addEventListener('change', yearCalculator);
input2.addEventListener('change', yearCalculator);

否则它只会在你的脚本第一次加载时起作用。

清理代码

var input1 = document.getElementById("input-mini");
var input2 = document.getElementById("input-mini2");
var msg = document.getElementById('message');

input1.addEventListener('change', yearCalculator);
input2.addEventListener('change', yearCalculator);

function yearCalculator() {
   var yearOne = input1.value;
    var yearTwo = input2.value;
    val1 = parseInt(yearOne);
    val2 = parseInt(yearTwo);
    if (isNaN(val1) || isNaN(val2)) {
        msg.innerHTML = "Please enter a valid year !!";
        return;
    }
    var value1 = yearOne - yearTwo + 18;

    if (yearOne == yearTwo) {
        msg.innerHTML = "Both years are the same";
    }

    if (yearOne < yearTwo) {
        if (yearTwo < value1) {
            msg.innerHTML = "This is a good result";
        } else if (yearTwo > value1) {
            msg.innerHTML = "This is a bad result";
        } else {
            msg.innerHTML  = "This is neither good or bad";
        }
    }
    else {
      msg.innerHTML ="Year 1 is greater than Year 2";  
    }
};
yearCalculator();

检查小提琴

于 2013-05-19T23:10:59.003 回答
1

您可以在两个输入字段中使用 onchange="yearCalculator()"

于 2013-05-19T23:10:43.190 回答
0

首先将 更改class='message'id='message'。然后试试这段代码:

var input1 = document.getElementById("input-mini");
var input2 = document.getElementById("input-mini2");
var yearOne = input1.value;
var yearTwo = input2.value;
var msg = document.getElementById('message');

function yearCalculator(value1, value2) {
     msg.innerHTML='';
    val1 = parseInt(value1);
    val2 = parseInt(value2);
    if (val1 === "NAN" || val2 === "NAN") return;


    var value1 = val1 - val2 + 18;

    if (val1 == val2) {
        msg.innerHTML="Both years are the same";
    }

    if (val1 < val2) {
        if (val2 < value1) {
            msg.innerHTML = "This is a good result";
        } else if (val2 > value1) {
            msg.innerHTML = "This is a bad result";
        } else {
            msg.innerHTML = "This is neither good or bad";
        }
    }
};
yearCalculator(yearOne,yearTwo);
input1.onkeyup=function() {
     yearCalculator(this.value,document.getElementById("input-mini2").value);
};
input2.onkeyup=function() {
     yearCalculator(document.getElementById("input-mini").value,this.value);
};
于 2013-05-19T23:27:15.757 回答