开按键取消文本框的变化事件和按钮单击文本框的触发器更改事件jquery

问题描述:

我想要取消按键上的文本框的更改事件,然后我想通过按钮单击来触发它。 这就是比如我HTML开按键取消文本框的变化事件和按钮单击文本框的触发器更改事件jquery

$('#btn1').on('click', function() { 
 
    var target = '#test'; 
 
    $(target).on("change"); 
 
    $(target).focus(); 
 
    $(target).val('HELLO').trigger('change'); 
 
}); 
 

 
$("#test").change(function(event) { 
 
    alert($(this).val()) 
 
}); 
 
$('#test').on('keypress', function(event) { 
 
    if (event.keyCode === 13) { 
 
     event.stopImmediatePropagation(); 
 
     $(this).off("change"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="test" /> 
 
<input type="submit" id="btn1" value="BUTTON1" />

,但它在不触发更改事件。

请提前。提前致谢。

JSFiddle

+0

删除event.stopImmediatePropagation();刚刚更新了小提琴,发现工作。 –

+0

不,没有发射改变事件,你可以请分享小提琴链接 –

+0

它不是。试试这个场景:首先点击按钮,然后选择-alert- sometype。你看起来不错。但是,然后点击按钮,没有警报。我认为问题在这里。 @AnupYadav –

$('#btn1').on('click', function() { 
       var target='#test'; 
     $(target).on("change",changeText($(target))); 
     $(target).focus(); 
     $(target).val('HELLO').trigger('change'); 
}); 

function changeText($this) { 
    alert($this.val()) 
} 
$('#test').on('keypress', function (event) { 
     event.stopImmediatePropagation(); 
     $(this).off("change"); 
}); 

事件是不是在功能PARAM并试图用传播史https://jsfiddle.net/0624eq86/20/

+0

我试过了。但是当我在文本框中敲击并点击按钮时,更改事件不起作用。 https://jsfiddle.net/aanair08/0624eq86/14/ –

+0

其实我的真实场景是获得按键输入呼叫ajax请求,并显示一些建议,并点击建议设置值文本框,并调用其更改事件 –

+0

@AbhijithANair检查我编辑的代码。 –

我想你忘记添加 “事件” 中的JavaScript代码

取代:

$('#test').on('keypress', function() { 
    event.stopImmediatePropagation(); 
    $(this).off("change"); 
}); 

有:

$('#test').on('keypress', function(event) { 
    event.stopImmediatePropagation(); 
    $(this).off("change"); 
}); 
+0

我也尝试过。但它不是文本框的火灾事件。 https://jsfiddle.net/aanair08/0624eq86/14/ –

function test(val){ 
 
    alert(val); 
 
} 
 
$('#btn1').on('click', function() { 
 
    var target = '#test'; 
 
    $(target).focus(); 
 
    $(target).val('HELLO').trigger('change'); 
 
    $(target).on("change", test($(target).val())); 
 
}); 
 

 
$('#test').on('keypress', function(event) { 
 
    event.stopImmediatePropagation(); 
 
    $(this).off("change"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="test" /> 
 
<input type="submit" id="btn1" value="BUTTON1" />

请检查答案,我希望这会为你工作。 我创建了一个函数测试,当点击函数的ON更改事件时调用此函数。

+0

其实我无法改变我的文本框更改功能。我的按键事件和按钮单击事件是全局编写的,每个页面的更改事件都是分开的。当我输入并按下输入建议将显示并单击建议文本框值填充并更改事件触发器和加载数据。如果我完全知道该值,则在输入文本框中键入数据加载。那是我需要的。但问题是我的是当我按下输入更改事件的工作。 –

+0

你正在用'$(“#test”)。on(“change”,function(){})'改变你的文本框更改函数,我已经放在单独的函数中,并且在按钮单击时调用相同的函数。简要地解释你想要做什么? –

+0

我在每个页面都有搜索框来搜索类似数字的内容,并且在更改内容时加载数据对应于该数字。我写了一个全球性的函数,在输入按键时获得建议。然后我点击建议填写文本框并触发更改事件。它的工作正常。但我的需要是,当我按下输入我不想触发器更改,当我点击建议我想触发更改事件。如果我必须替换更改事件,那么我需要在超过200个我认为的地方进行更改 –