我正在尝试创建一个函数,该函数将在 a 的值text input field
更改时执行。单击表格单元格时,字段的值会发生变化,而不是 on keyup
,也不粘贴。我试过这样:
$("#kat").change(function(){
alert("Hello");
});
我有文本字段:
<input type="text" id="kat" value="0"/>
但它不起作用。有什么帮助吗?
这是来自 jQuery 文档页面上的评论:
在较旧的 HTML5 之前的浏览器中,“keyup”绝对是您要找的。
在 HTML5 中有一个新事件“input”,它的行为与您认为“change”应该表现的完全一样——只要按下一个键以将信息输入到表单中,它就会触发。
$('元素').bind('输入',函数);
在我看来,您正在更新 javascript 中文本字段的值。onchange
仅当您键入数据并跳出文本字段时才会触发事件。
一种解决方法是在从脚本修改文本框值时触发文本框更改事件。见下文,
$("#kat").change(function(){
alert("Hello");
});
$('<tab_cell>').click (function () {
$('#kat')
.val($(this).text()) //updating the value of the textbox
.change(); //trigger change event.
});
这种技术对我有用:
$('#myInputFieldId').bind('input',function(){
alert("Hello");
});
请注意,根据this JQuery doc,建议使用“on”而不是在较新版本中绑定。
这对我有用
var change_temp = "";
$('#url_key').bind('keydown keyup',function(e){
if(e.type == "keydown"){
change_temp = $(this).val();
return;
}
if($(this).val() != change_temp){
// add the code to on change here
}
});
jQuery 文档说:“如果您更改字段中的文本然后单击离开,它也会显示 [处理程序执行结果]。但是,如果字段在内容没有更改的情况下失去焦点,则不会触发事件。”。
尝试 keyup 和 keydown 事件,如下所示:
$("#kat").keydown(function(){
alert("Hello");
});
function search() {
var query_value = $('input#search').val();
$('b#search-string').html(query_value);
if(query_value !== ''){
$.ajax({
type: "POST",
url: "search.php",
data: { query: query_value },
cache: false,
success: function(html){
//alert(html);
$("ul#results").html(html);
}
});
}return false;
}
$("input#search").live("keyup", function(e) {
clearTimeout($.data(this, 'timer'));
var search_string = $(this).val();
if (search_string == '') {
$("ul#results").fadeOut();
$('h4#results-text').fadeOut();
}else{
$("ul#results").fadeIn();
$('h4#results-text').fadeIn();
$(this).data('timer', setTimeout(search, 100));
};
});
and the html
<input id="search" style="height:36px; font-size:13px;" type="text" class="form-control" placeholder="Enter Mobile Number or Email" value="<?php echo stripcslashes($_REQUEST["string"]); ?>" name="string" />
<h4 id="results-text">Showing results for: <b id="search-string">Array</b></h4>
<ul id="results"></ul>
我最近想知道为什么我的代码不起作用,然后我意识到,我需要在加载文档后立即设置事件处理程序,否则当浏览器逐行加载代码时,它会加载 JavaScript,但它没有还拥有将事件处理程序分配给它的元素。以你的例子,它应该是这样的:
$(document).ready(function(){
$("#kat").change(function(){
alert("Hello");
});
});
这适用于所有浏览器和 Jquery <= v1.10
$('#kat').on('keyup', function () {
alert("Hello");
});
或者如你所愿
$('#kat').on('click', function () {
alert("Hello");
});
文本框输入字段更改事件会按您的预期触发,jQuery .Change 事件仅在支持 html5 的浏览器上正常工作
这对我有用。如前所述,可能是浏览器问题,或者可能没有正确注册 jQuery,或者真正的问题可能更复杂(您制作了一个更简单的版本来问这个问题)。PS-确实必须单击文本框才能使其触发。
尝试这个,
$('#kat').on('input',function(e){
alert('Hello')
});