Javascript 使用表单更改标签的值,但不刷新页面
我想创建一个基于输入值和计算结果的表单,并将其输入到网页html中的div/label/bit中 一种类似于在线货币转换器的工作方式 (插入第一种货币的数字,无论是否使用提交按钮,您都可以在不刷新页面的情况下看到结果) 这是我的一小段代码(我无法理解实现上述目标的概念/机制)Javascript 使用表单更改标签的值,但不刷新页面,javascript,jquery,html,Javascript,Jquery,Html,我想创建一个基于输入值和计算结果的表单,并将其输入到网页html中的div/label/bit中 一种类似于在线货币转换器的工作方式 (插入第一种货币的数字,无论是否使用提交按钮,您都可以在不刷新页面的情况下看到结果) 这是我的一小段代码(我无法理解实现上述目标的概念/机制) 使用html尝试以下简单脚本: <html> <body> <p>Click the button to calculate x.</p> <but
使用html尝试以下简单脚本:
<html>
<body>
<p>Click the button to calculate x.</p>
<button onclick="myFunction()">Add it</button>
<br/>Enter first number:
<input type="text" id="txt1" name="text1">
<br/>Enter second number:
<input type="text" id="txt2" name="text2">
<p id="demo"></p>
<script>
function myFunction() {
var y = document.getElementById("txt1").value;
var z = document.getElementById("txt2").value;
var x = +y + +z;
document.getElementById("demo").innerHTML = x;
}
</script>
</body>
</html>
单击按钮以计算x
加上
输入第一个数字:
输入第二个数字:
函数myFunction(){
var y=document.getElementById(“txt1”).value;
var z=document.getElementById(“txt2”).value;
var x=+y++z;
document.getElementById(“demo”).innerHTML=x;
}
如果我理解正确,您将尝试检索输入值,对它们执行一些数学运算,并将其返回到页面而不刷新,如果是这样:
$(函数(){
//第一身份证的val
$(“#firstId”).keyup(函数(){
//一等兵
var total=parseInt($(this.val())+parseInt($(“#secondID”).val());
控制台日志(总计);
$(“#总计”).empty().append(总计);
});
//为第二个关键点
$(“#secondID”).keyup(函数(){
var total=parseInt($(this.val())+parseInt($(“#firstId”).val());
控制台日志(总计);
$(“#总计”).empty().append(总计);
});
})
尝试以下html和jquery组合:
<form id="form" class="green">
<div class="element-number column1">
<label for="avanti-testa" class="title">
<span class="titolo-riga required">Number1</span>
<input id="firstId" class="small" type="number" min="0" max="100" name="number1" required="required" value="0" />
</label>
</div>
<div class="element-number column1">
<label for="avanti-testa" class="title">
<span class="titolo-riga required">Number2</span>
<input id="secondID" class="small" type="number" min="0" max="100" name="number1" required="required" value="0" />
</label>
</div>
<div id="answer"></div>
<button id="submitForm" type="button">Submit</button>
</form>
<script>
// assuming jQuery is loaded
(function($) {
$('#submitForm').on('click', function (e) {
e.preventDefault();
var answer = parseInt($('#firstId').val(), 10) + parseInt($('#secondId').val(), 10);
$('#answer').text(answer);
});
})(jQuery);
</script>
第一
2号
提交
//假设jQuery已加载
(函数($){
$(#submitForm')。在('click',函数(e)上{
e、 预防默认值();
var-answer=parseInt($('firstId').val(),10)+parseInt($('firstId').val(),10);
$('答案')。文本(答案);
});
})(jQuery);
作为替代解决方案,我想发布一个使用AngularJS创建的简单答案。这是普朗克:
守则是:
<div class="col-md-2 col-md-offset-5 form-group">
<input class="form-control" type="number" ng-model="firstValue" />
<p class="text-center">+</p>
<input class="form-control" type="number" ng-model="secondValue" />
</div>
<div class="panel panel-primary col-md-2 col-md-offset-5 text-center">
{{ firstValue + secondValue }}
</div>
+
{{firstValue+secondValue}}
这些类来自Bootstrap,只是为了让它更漂亮一点。可能的重复代码中有很多错误:您有一个标签用于
avanti testa
,但没有一个元素具有该id。您也应该只使用一次标签。在JavaScript中,您试图访问HTML文档中不存在的ID。我宁愿用AngularJS来完成这项任务。使用jQuery有什么限制吗?@AlexanderM。不,OP的问题不止这些。他需要更多的帮助。@cezar我发布了一个错误的代码…请发布正确的代码。错误的代码会导致错误的假设,因此提出的解决方案也会是错误的。如果使用HTML5输入类型,可以增强表单。您可以使用type=“number”
而不是type=“text”
。因此,您可以简化行var x=y+z
。这是解决这一问题的好方法,但必须实现将数据输入表单的控件。感谢您的建议,但这只是一个函数的演示。
<script>
$(function(){
//val for firstid
$("#firstId").keyup(function() {
//val of firstId
var total = parseInt($(this).val()) + parseInt($("#secondID").val());
console.log(total);
$("#total").empty().append(total);
});
//for keyup for second
$("#secondID").keyup(function() {
var total = parseInt($(this).val()) + parseInt($("#firstId").val());
console.log(total);
$("#total").empty().append(total);
});
})
</script>
<form id="form" class="green">
<div class="element-number column1">
<label for="avanti-testa" class="title">
<span class="titolo-riga required">Number1</span>
<input id="firstId" class="small" type="number" min="0" max="100" name="number1" required="required" value="0" />
</label>
</div>
<div class="element-number column1">
<label for="avanti-testa" class="title">
<span class="titolo-riga required">Number2</span>
<input id="secondID" class="small" type="number" min="0" max="100" name="number1" required="required" value="0" />
</label>
</div>
<div id="answer"></div>
<button id="submitForm" type="button">Submit</button>
</form>
<script>
// assuming jQuery is loaded
(function($) {
$('#submitForm').on('click', function (e) {
e.preventDefault();
var answer = parseInt($('#firstId').val(), 10) + parseInt($('#secondId').val(), 10);
$('#answer').text(answer);
});
})(jQuery);
</script>
<div class="col-md-2 col-md-offset-5 form-group">
<input class="form-control" type="number" ng-model="firstValue" />
<p class="text-center">+</p>
<input class="form-control" type="number" ng-model="secondValue" />
</div>
<div class="panel panel-primary col-md-2 col-md-offset-5 text-center">
{{ firstValue + secondValue }}
</div>