每次更改指定表单的输入时隐藏字段

时间:2014-11-24 14:04:23

标签: jquery ruby-on-rails-3.2

每次更改#my_form中的输入时,我都想隐藏#result。我尝试了这个,但它没有工作

$('#my_form .input').each(function(){
  $(this).change(function(ev) {
    $('#result').hide();
  });
});

编辑:我有另一个显示#result

的按钮

编辑2:它适用于此但它不适用于select_tag

即使我这样做了:

$('#my_form input').on('input | change | keyup | keydown | select', function(){
  $("#result").hide();
})

6 个答案:

答案 0 :(得分:1)

试试这段代码:

$('#my_form .input').on('input,change,keyup,keydown,', function(){
  $("#result").hide();
});

答案 1 :(得分:1)

试试这个 - 它对DOM更温和一点

// get the result element once    
var result = $('#result');
// declare a method to handle the input change once, not every time the event happens
function input_changeHandler(event) {
    result.hide();
}
// bind the listener to your form (using more efficient selectors)
$('#my_form').on('change,keyup', 'input, select, textarea', input_changeHandler);

请注意范围,因为'结果'会是全球的。如果你把它全部包装在一个方法(闭包)中,你就可以了。

希望有所帮助!

答案 2 :(得分:0)

你可以这样

$(".input").on("input", function() {
    alert("Value changed!");
    $("#result").hide();
});

DEMO

答案 3 :(得分:0)

如前所述,如果您希望附加到input元素,则不应该在其前面添加一个点,因为这将查找 class 输入。

此外,您不需要循环并单独将更改应用于每个input。你可以将它绑定在初始选择器上。

最后,自{v1.7起

以来,on是在jQuery中添加事件处理程序的推荐方法
$('#my_form input').on('change', function() {
  $('#result').hide();
});

如果你想在按任何键时隐藏它,而不是仅仅在输入失去焦点时,你可以附加多个事件处理程序,但它们应该用空格分隔,而不是任何其他字符(参见文档的上一个链接):

$('#my_form input').on('input change keyup keydown', function() {
  $('#result').hide();
});

答案 4 :(得分:0)

好的以上所有内容都适用于某些内容,但我发现即使使用select_tags:

$('#simulation :input').on('input | change | select', function(){
  $("#result").hide();
})

答案 5 :(得分:-1)

为什么使用 $。each 功能,同时可以处理如下事件:



$('#my_form .input').on('input | change | keyup | keydown', function(){
  $("#result").hide();
})



 更好地使用$ .on()并使用'输入' HTML5事件,当字段发生变化时触发,并且还会更改,键入,键入'如果浏览器不支持输入事件,请确保事件触发,同时“更改”'事件有一些错误,在所有情况下都不会触发,但是输入'事件触发任何类型的用户行为完美(如ctrl + v,鼠标右键单击>过去,甚至鼠标滚轮输入数字)