2017-05-29 84 views
0

假设我有一个包含多个表单的页面。当一个表单输入信息时,其他表单的所有元素都应该被禁用。禁用除当前正在使用的表单中的所有表单元素

我曾尝试选择不同的是使用.not(),然后让使用:input选择每个输入单元以及将所述disabled属性,但是当信息被输入时,在所有的形式的所有元素获得禁用当前一个所有表格不管使用哪种形式。

$('form').on("input", ":input", function() { 
    $('form').not(this).each(function() { 
     $(this).find(':input').prop('disabled', true); 
    }); 
    }); 

Fiddle Link(很凌乱,但只是为了演示) 当输入到任何在顶部形式的元素的信息,在底模的所有内容应被禁用。

回答

1

this在该委托的情况下是获得输入事件的输入字段。在执行not()逻辑之前,您需要获得最接近的('form')。

$('form').not($(this).closest('form')) 
+0

这很好用,谢谢!我以前认为'.not(this)'将被视为“不是这种形式”,因为之前的形式。我可以简单地进一步避免使用'.each()': '$('form')。not($(this).closest('form'))。find(':input')。 prop('disabled',true);' 再次感谢您的帮助! – cw1998

+0

是的,不需要每个人,:) – Taplar

相关问题