检测用户输入的文本框的值

时间:2013-10-22 17:17:42

标签: javascript jquery

我有一个textbox,我可以直接从键盘或鼠标点击输入值。如果我从鼠标单击,则值将从前一个值增加1。而从键盘我可以输入任何值。我的问题是如何检测任何用户输入的文本框的值。

假设键盘输入了任何值,我需要重置为零。

这是我到目前为止所得到的

function AddTrackingItem()
{
    var counter;


$("#Item_Count").keyup(function (event) {
    if(event.which == 13)
        counter = 0;   // if value is enter from keyboard then reset value
    else
    {
        counter = $("#Item_Count").val();
    }
});

TIA

2 个答案:

答案 0 :(得分:1)

我假设html看起来像这样:

<input type="text" id="item_count" value="0" />
<input type="button" id="btn" value="Increment"/>

您需要一个事件处理程序来显示按钮(显然),以及输入字段上change事件的事件处理程序。单击按钮不会触发更改事件,但手动更改输入字段。因此,如果用户改变字段,我们可以安全地将计数器重置为0.

$('#btn').on( 'click', function() {
  $('#item_count').val( function( i, oldval ) {
    return (oldval*1) + 1;
  } );
} );

$('#item_count').on( 'change', function() {
  $('#item_count').val( '0' );
} );

编辑:输入数据的方法只有两种。一个是键盘。另一个是按钮。这意味着如果更改事件不是由按钮触发的,则100%触发更改事件的情况必须通过键盘触发。您可以稍微改变代码以包含jQuery的.data(...)docs)功能,并执行类似下面的代码。它会在更改时重置输入,然后按下按钮。

$('#btn').on( 'click', function() {
  $('#item_count').val( function( i, oldval ) {
    if( $(this).data( 'fromKeyboard' ) == 1 ) {
      $(this).data('fromKeyboard', 0 );
      return 1;
    }
    return (oldval*1) + 1;
  } );
} );

$('#item_count').on( 'change', function() {
  $(this).data( 'fromKeyboard', 1 );
} );

示例on jsbin

答案 1 :(得分:0)

如果您不希望用户在文本框中手动输入值,为什么不将其设为只读? 无论如何,如果你想做你坚持做的事情。这是怎么做的。

$("#btn").click(function(){
    var currentVal = $("#item_count").val(); 
    var counter = parseInt(currentVal) + 1;
    $("#item_count").val(counter);
});

$("#item_count").keyup(function (event) {
    $("#item_count").val("0");
});

请注意,我没有输入键事件(13)的侦听器,因为我在键盘时将值更改为0。如果要在输入键上将值更改为0,则可以执行代码中的操作。请记住将字符串转换为int,以便添加/增加值。当你执行.val()时,它返回一个不是int的字符串。希望这可以帮助。如果您有任何问题,请告诉我。