在文本输入区域中创建双向更新
Creating bidirectional update in text entry areas
这可能很简单,但我似乎在不断减少的圈子里跑来跑去。。。
我正在为我们的工资区开发一个网页。。。
Q。是否可以有两个文本输入字段,它们会自动更新并双向工作。即一个将更新另一个,反之亦然,这取决于输入
我在这里追求的。。。
员工当前工资输入到文本输入中
然后,工资单可以将数据输入两个文本输入之一(新工资或百分比增长)
输入新薪资将自动更新百分比增长或输入百分比增长将自动更新新薪资字段
整个想法是允许工资单使用百分比或实际工资提出新的数字
谢谢Frankie G
这里有一个非常基本的实现,没有验证输入的值是数字的:
window.onload = function() {
var currentSal = document.getElementById("current"),
percentInc = document.getElementById("percent"),
newSal = document.getElementById("new");
percentInc.onkeyup = function() {
newSal.value = currentSal.value * (1 + percentInc.value / 100);
};
newSal.onkeyup = function() {
percentInc.value = (newSal.value - currentSal.value) / currentSal.value * 100;
};
};
这假设您的html标记使用元素id"current"、"percent"answers"new",但显然您可以更改这些。在百分比增长或新薪资字段中的任何关键字设置上,只需进行适当的计算并更新其他字段即可。整件事都在页面的onload事件中,这样document.getElementById()
就可以找到元素——相反,你可以把它放在页面末尾的脚本块中(尽管所有元素都包含在这样的函数中,使变量不在全局范围内)。
演示:http://jsfiddle.net/5pDdM/
您必须实现onChange方法或onkeyup。
两者都是可用的,尽管onChange在用户离开字段并更改输入时被触发,而onkeyup在您释放所按下的键时被触发(这意味着,如果您按住按钮,它不会触发,只有在释放后才会触发)。
在这个功能中,你可以做一些类似的事情
function salEntered(sal)
{
document.getElementById("#perc").value = (document.getElementById("#origSal").value / sal )* 100;
}
function percEntered(perc){
var new_sal = document.getElementById("#origSal").value * ( 1+ perc/100);
document.getElementById("newSal").value = new_sal;
}
并将它们绑定到其中一个命名事件。我把perc作为一个完整的十进制记数法。
使用绑定它们
<input type="text" id="newSal" onChange="salEntered(document.getElementById('newSal').value)" />
或者打开键盘。
无法测试,稍后我醒来时会做。
如果错误,请纠正我。使用var关键字可以将变量保持在正确的范围内,即函数。
- 如何为动态创建的文本区域中输入的值更新ng模型
- Knockout映射创建/更新出现问题
- 创建新对象时,为什么要更新旧对象
- 如何创建对表单的自我更新响应
- 在文本输入区域中创建双向更新
- 基本D3.js:创建或更新元素
- 如何创建独立于数组更新的组件列表
- 确定是创建新对象还是更新现有对象
- 更新脚本以针对具有递增 ID 的新创建的表行运行
- 创建使用 ajax 更新 iframe 的链接
- 通过两种方法创建和更新 CSS
- Sequelize多对多-如何创建新记录并更新联接表
- 检查文档是否已经存在,如果是则更新,否则创建新的Mongoose
- 如果正在创建或更新项目,请在模型“validate”内部进行区分
- 如何使用AJAX创建/更新单选按钮
- 在分析中创建或更新对象
- Mongoose创建一个文档,如果找不到指定的字段,则更新文档中的数组
- 如何为剑道网格创建、更新和删除IList中的数据
- 如何创建每秒更新真实数据的Hight Charts图表
- 动态更新/创建对象属性