2017-05-29 100 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

相關問題