2017-04-26 51 views
0

那么我面临一个问题来处理input字段的更改事件。因为我正在通过另一个脚本更改输入字段的文本。因此我无法赶上事件。当我通过另一个jQuery手动更改输入值时,如何捕获jQuery更改事件?

enter image description here

看,在这里我有2个按钮-+时候我会单击 -/+,则一些值在文本框中插入。这是一个数值,我已经手动添加增加和减少,通过包括和减少1.无论如何,因为我的文本框内的文本正在改变,但我不能捕获事件在jQuery 我的代码如下

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
<button>-</button><input type="text" id="abc" /><button>+</button> 

和我的jQuery函数都没有捕获事件。

$("#abc").change(function(){ 
    alert(); 
}); 
$("#abc").click(function(){ 
    alert(); 
}); 

因为我通过另一个jQuery助手添加了文本。那么我怎样才能抓住文字变化事件。我不想在增量和减量函数中写下代码。我想保持该代码完好无损。那么有什么方法可以轻松解决这个问题吗?提前致谢。

更新: 这里是增量更新代码和递减

var btn = $(this), 
      oldValue = $('#abc').val().trim(), 
      newVal = 0; 

     if (btn.attr('data-dir') == 'up') { 
      newVal = parseInt(oldValue) + 1; 
     } else { 
      newVal = parseInt(oldValue) - 1; 
     } 
$('#abc').val(newVal); 
+0

可以youp租赁份额当天的其他脚本 – brk

+0

提示:养成使用Vue.js,如果你有一个需要在多个地方同步数据。它可以与jQuery结合使用。此外,您正在使用更改事件,这是选择,使用输入。 $('#some_text_box')。on('input',function(){}) –

+0

在很多情况下添加一个框架(比如vue)将会导致开销太大。 –

回答

1

您需要.trigger(event)的情况下,当用户将元素交互事件被触发。

$("#abc").change(function() { 
 
    console.log('changed', this.value); 
 
}); 
 

 
$("button").click(function() { 
 
    var btn = $(this), 
 
    oldValue = $('#abc').val().trim(), 
 
    newVal = 0; 
 

 
    if (oldValue != '') { 
 
    if (btn.attr('data-dir') == 'up') { 
 
     newVal = parseInt(oldValue, 10) + 1; 
 
    } else { 
 
     newVal = parseInt(oldValue, 10) - 1; 
 
    } 
 
    } 
 
    
 
    $('#abc').val(newVal).trigger('change'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<button data-dir="down">-</button><input type="text" id="abc" /><button data-dir="up">+</button>

+0

您的解决方案正在工作,但部分。因为当输入字段完全空时,如果我尝试按加号或减号按钮,那么它不起作用。但在负载温度它是一个值,然后它工作正常。 – gdmanandamohon

+0

@lazycoder,你可以分享加号或减号按钮代码吗?最好看看完整的图片 – Satpal

+0

当然!为什么不。让我提供一个快照。 – gdmanandamohon

1

,因为这是改变输入其他脚本也使用jQuery,最可靠的方法是可能只是触发输入值已经被更新后手动更改事件。

$('.counter').val(oldValue + 1).trigger('change'); 
+0

对不起!我想保持这个功能不变。正如我在我的问题中提到的那样。因为此功能在多个地方使用。但是这个功能只需要其中的2个。 – gdmanandamohon

+0

你写道你不想在其他函数中增加功能。这只是确保生命周期事件被调用。它与你是否处理该事件无关。 –

相关问题