javascript - Javascript 不适用于我的模态 html?
问题描述
我目前正在处理一个需要使用模态和 js 进行简单计算的问题,这里是我的代码
$('input').keyup(function() { // run anytime the value changes
var firstValue = Number($('#first').val()); // get value of field
var secondValue = Number($('#second').val()); // convert it to a float
var thirdValue = Number($('#third').val());
var fourthValue = Number($('#fourth').val());
$('#total_expenses1').html(firstValue + secondValue + thirdValue + fourthValue); // add them and output it
document.getElementById('total_expenses2').value = firstValue + secondValue + thirdValue + fourthValue;
});
<a href="#myModal" class="btn btn-settings" data-backdrop="false" data-toggle="modal">Open Modal</a> and here the modal code
<div id="myModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Settings</h4>
</div>
<div class="modal-body">
<h3>Calc</h3>
<input id='first' type="text" class="form-control formBlock" name="bus_ticket" placeholder="Bus Ticket..." required/><br />
<input id='second' type="text" class="form-control formBlock" name="plane_ticket" placeholder="Plane Ticket..." required/><br />
<input id='third' type="text" class="form-control formBlock" name="hotel_expenses" placeholder="Hotel Expenses..." required/><br />
<input id='fourth' type="text" class="form-control formBlock" name="eating_expenses" placeholder="Eating Expenses..." required/><br />
<br /><br /> Total: <span id="total_expenses1"></span>
<br /> Total: <input id='total_expenses2' type="text" class="form-control formBlock" name="funding" placeholder="Total Expenses..." />
<br /><br />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button id="loadpage" type="button" class="btn btn-primary">Save</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
解决方案
似乎您的代码在 DOM 完全加载之前正在执行。
您可以通过以下方式解决问题:
您可以使用事件委托方法来
.on()
确保事件将附加到稍后添加到文档中的元素。$('body').on('keyup', 'input', function(){...
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script>
$('body').on('keyup', 'input', function(){ // run anytime the value changes
var firstValue = Number($('#first').val()); // get value of field
var secondValue = Number($('#second').val()); // convert it to a float
var thirdValue = Number($('#third').val());
var fourthValue = Number($('#fourth').val());
$('#total_expenses1').html(firstValue + secondValue + thirdValue + fourthValue); // add them and output it
document.getElementById('total_expenses2').value = firstValue + secondValue + thirdValue + fourthValue;
});
</script>
<a href="#myModal" class="btn btn-settings" data-backdrop="false" data-toggle="modal">Open Modal</a>
and here the modal code
<div id="myModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Settings</h4>
</div>
<div class="modal-body">
<h3>Calc</h3>
<input id='first' type="text" class="form-control formBlock" name="bus_ticket" placeholder="Bus Ticket..." required/><br />
<input id='second' type="text" class="form-control formBlock" name="plane_ticket" placeholder="Plane Ticket..." required/><br />
<input id='third' type="text" class="form-control formBlock" name="hotel_expenses" placeholder="Hotel Expenses..." required/><br />
<input id='fourth' type="text" class="form-control formBlock" name="eating_expenses" placeholder="Eating Expenses..." required/><br />
<br /><br />
Total: <span id="total_expenses1"></span>
<br />
Total: <input id='total_expenses2' type="text" class="form-control formBlock" name="funding" placeholder="Total Expenses..."/>
<br /><br />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button id="loadpage" type="button" class="btn btn-primary">Save</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
- 您可以将脚本代码放在正文的底部,也可以用
$(document).ready(function(){...});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script>
$(document).ready(function(){
$('input').keyup(function(){ // run anytime the value changes
var firstValue = Number($('#first').val()); // get value of field
var secondValue = Number($('#second').val()); // convert it to a float
var thirdValue = Number($('#third').val());
var fourthValue = Number($('#fourth').val());
$('#total_expenses1').html(firstValue + secondValue + thirdValue + fourthValue); // add them and output it
document.getElementById('total_expenses2').value = firstValue + secondValue + thirdValue + fourthValue;
});
});
</script>
<a href="#myModal" class="btn btn-settings" data-backdrop="false" data-toggle="modal">Open Modal</a>
and here the modal code
<div id="myModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Settings</h4>
</div>
<div class="modal-body">
<h3>Calc</h3>
<input id='first' type="text" class="form-control formBlock" name="bus_ticket" placeholder="Bus Ticket..." required/><br />
<input id='second' type="text" class="form-control formBlock" name="plane_ticket" placeholder="Plane Ticket..." required/><br />
<input id='third' type="text" class="form-control formBlock" name="hotel_expenses" placeholder="Hotel Expenses..." required/><br />
<input id='fourth' type="text" class="form-control formBlock" name="eating_expenses" placeholder="Eating Expenses..." required/><br />
<br /><br />
Total: <span id="total_expenses1"></span>
<br />
Total: <input id='total_expenses2' type="text" class="form-control formBlock" name="funding" placeholder="Total Expenses..."/>
<br /><br />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button id="loadpage" type="button" class="btn btn-primary">Save</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
推荐阅读
- r - 在 R 中运行接受用户输入的可执行文件
- azure - 我应该如何为由多个服务组成的应用程序构建 Helm 图表?
- android - 以编程方式在 MotionLayout 中设置边距
- docker - 整个工作人员都使用相同的 VSCode 设置吗?
- c# - 以编程方式在 C# 中使用示例数据从 XSD 创建 XML
- unity3d - VRTK/Unity3D/Vive VR,触摸板控制,按下触摸板移动,有时收不到输入,为什么?
- c# - Blazor:IServiceCollection 不包含 AddDefaultIdentity 的定义
- python - 让函数运行特定时间的问题
- reactjs - 执行多个功能 OnPress
- javascript - 如何使用 PDF.js 确定 PDF 的自然页面大小