2012-05-03 55 views
26

我正在尝试做一个函数,它将在text input field的值更改时执行。当单击表单元格时,该字段的值会更改,而不是keyup,也不会粘贴。我想这样的:jQuery - 在更改输入文本

$("#kat").change(function(){ 
    alert("Hello"); 
}); 

和我有文本字段:

<input type="text" id="kat" value="0"/> 

,但它无法正常工作。任何帮助?

+1

声音就像你想附加到该表单元格的单击事件。 – Tejs

+1

当你点击一个表格单元格时,这个值是什么意思,标记是哪里的,而不会意味着一个点击事件处理程序要走? – adeneo

+0

我想通过将点击链接的值放在文本输入字段中,然后执行一个函数来减少代码量,但最终我为每个单击事件(22个事件)做了一个函数... –

回答

25

这是jQuery的文档页面上的意见:

在老的预HTML5的浏览器,“KEYUP”绝对是你在找什么。

在HTML5中,有一个新事件“输入”,其行为与您似乎认为“更改”应该表现的行为完全相同 - 因为只要按下一个按键即可将信息输入表单。 ('element')。bind('input',function);

4

jQuery的文件说,这个“如果你改变了文本的字段,然后点击即可。如果该字段失去焦点,而不内容已经改变,虽然,事件它也显示[处理程序执行结果]不会被触发。“

尝试KEYUP和的keydown事件,就像这样:

$("#kat").keydown(function(){ 
    alert("Hello"); 
}); 
9

我看来,像要更新的文本字段的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. 
}); 
+0

我想通过将点击链接的值放在文本输入字段中,然后执行一个函数来减少代码量,但最终我为每个单击事件(22个事件)做了一个函数... –

+0

@MarkoCakic您的问题不清楚,请发布相关的HTML和JS,以便我们提供帮助。 –

+0

这是触发链接事件的非常酷的方式。谢谢! – film42

0

这对我有用。可能是上述的浏览器问题,或者jQuery没有正确注册,或者真正的问题更复杂(您提出了更简单的版本)。 PS - 确实必须点击文本框才能使其闪光。

http://jsfiddle.net/toddhd/Qt7fH/

9

此技术为我工作:即根据this JQuery doc, “关于” 建议,而不是在新版本中绑定

$('#myInputFieldId').bind('input',function(){ 
       alert("Hello"); 
    }); 

注意。

0

这对我的作品在所有浏览器和jQuery < = 1.10

$('#kat').on('keyup', function() { 
    alert("Hello"); 
}); 

或因为它似乎想要

$('#kat').on('click', function() { 
    alert("Hello"); 
}); 

文本框输入范围变更事件触发,你会期望它,jQuery。更改事件只是正常工作在HTML5支持的浏览器

4

这为我工作

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 
    } 

}); 
3
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> 
0

试试这个,

$('#kat').on('input',function(e){ 
alert('Hello') 
}); 
1

最近我在想,为什么我的代码不能正常工作,那么我意识到,一旦文档被加载,我需要设置事件处理程序,否则,当浏览器逐行加载代码时,它会加载JavaScript,但它还没有指定前夕的元素nt处理程序。 与你的例子,它应该是这样的:

$(document).ready(function(){ 
    $("#kat").change(function(){ 
     alert("Hello"); 
    }); 
});