【发布时间】:2012-05-29 03:35:40
【问题描述】:
我有一组输入,对于我输入的每个值,我都有一个“范围”滑块和一个“数字”输入。我有一点 JS 由滑块和数字字段调用,每个输入都使用 onchange="send(input_id, input_kind, this.value)" 属性。 如果滑块移动了,我会更新数字,如果数字改变了,我会更新滑块。
这对滑块来说很好,只要一个人移动它,数字就会开始跟踪。当使用小向上/向下箭头调整数字或键入数字时,滑块不会更新。在选择另一个字段之前不会调用 JS,即输入失去焦点然后将其数据传递给我的 bind{k, d, v} 函数。
HTML:
<div class="number-pair">
<sub-title>X-Position</sub-title><br />
<input id="/layout/1/slider" class="slider" type="range" value="0" min="-1" max="1" step="0.01" onchange="bind('/layout/1', 'slider', parseFloat(this.value))" />
<input id="/layout/1/number" class="number-box" type="number" value="0" min="-1" max="1" step="0.01" onchange="bind('/layout/1', 'number', parseFloat(this.value))" /><br />
</div>
JS:
function bind(id, control, v)
{
if (control=="slider")
{
if (console) console.log("It's a slider");
e = document.getElementById("/layout/1/number");
if (e)
{
e.value = v;
}
} else if (control=="number")
{
if (console) console.log("It's a float");
e = document.getElementById("/layout/1/slider");
if (e)
{
e.value = v;
}
}
}
如何使用数字箭头获得响应更快的绑定?
注意我不仅将两个输入相互绑定,还绑定到其他地方的屏幕效果,因此在这种情况下移动响应式绑定是可取的,而不仅仅是我可以使用的滑块。 此外,我使用文字来更新我的 JS 中的配对值,但文字将被动态表达式替换,因此我可以绑定整个范围的滑块/文本数字输入对。
【问题讨论】:
-
问为什么当用户输入
type="number"时没有触发更改事件,这是一种非常啰嗦的方式吗?
标签: javascript html data-binding input range