好的我有这个向上/向下数字输入框:
标记:
git checkout master -- <file>
使用Javascript:
<div class="rotatortextbox">
<asp:TextBox ID="txtrunningtimeforfirstlot" ClientIDMode="Static" runat="server">0</asp:TextBox>
In mins)
</div>
<div class="rotatorarrow">
<input id="UpButton" value="▲" type="button" onmousedown="timerID = setInterval(function(){FactUp()},100);" onmouseup="clearInterval(timerID);" />
<input id="DownButton" value="▼" type="button" onmousedown="timerID = setInterval(function(){FactDown()},100);" onmouseup="clearInterval(timerID);" />
</div>
这完全没问题。但是如何在Jquery中进行这样做,以便我不需要为每个这样的文本框创建单独的var timerID = 0;
function FactDown() {
var obj = document.getElementById("<%=txtrunningtimeforfirstlot.ClientID%>");
var num = parseInt(obj.value)
if (isNaN(num)) {
return;
}
num -= 1;
obj.value = num;
}
function FactUp() {
var obj = document.getElementById("<%=txtrunningtimeforfirstlot.ClientID%>");
var num = parseInt(obj.value);
if (isNaN(num)) {
return;
}
num += 1;
obj.value = num;
}
/ FactUp
函数?
我希望找到一种使用Jquery的.closest方法来实现它的方法。这样我就不必一次又一次地指定文本框的#id。
答案 0 :(得分:0)
使用.Net framewotk 4.5
及以上版本,只需使用TextMode="Number"
作为文本框的属性即可。这将自动增加键上/下的减少。
<asp:TextBox ID="txtrunningtimeforfirstlot" ClientIDMode="Static" runat="server" TextMode="Number">0</asp:TextBox>
答案 1 :(得分:0)
代码如下:此代码仅供您参考,它将演示如何在不创建任何功能的情况下更改文本框的值。
<input type="text" ID="txtrunningtimeforfirstlot" value="0" />
<input id="UpButton" value="▲" type="button" onclick="alert($('#txtrunningtimeforfirstlot').val());$('#txtrunningtimeforfirstlot').val(parseInt($('#txtrunningtimeforfirstlot').val())+1)" />
答案 2 :(得分:0)
使用Vanilla JS,你可以做到这一点。
var timerID = 0;
function NewFactFunction(action) {
var obj = document.getElementById("<%=txtrunningtimeforfirstlot.ClientID%>");
var num = parseInt(obj.value)
if (isNaN(num)) {
return;
}
if(action === "up"){
num +=1
}
else{
num -= 1;
}
obj.value = num;
}
然后点击向上和向下按钮的事件将分别为"timerID = setInterval(function(){NewFactFunction("up")},100);"
和"timerID = setInterval(function(){NewFactFunction("down")},100);"
。
答案 3 :(得分:0)
我自己找到了答案,所以我在这里发帖子:
<强> Jquery的:强>
var intervalId;
$(".up").mousedown(function() {
var box = $(this).closest('div').find('.Rbox');
intervalId = setInterval(
function() {
$(box).val(parseInt($(box).val()) + 1);
}, 100);
}).mouseup(function() {
clearInterval(intervalId);
});
$(".down").mousedown(function() {
var box = $(this).closest('div').find('.Rbox');
intervalId = setInterval(
function() {
$(box).val(parseInt($(box).val()) - 1);
}, 100);
}).mouseup(function() {
clearInterval(intervalId);
});
.up,
.down {
font-size: 6px;
display: block;
height: 10px;
}
.rotator span {
display: inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="rotator">
<span><input type="text" class='Rbox' value="0" /></span>
<span><input class='up' value="▲" type="button" />
<input class='down' value="▼" type="button" /></span>
</div>