2015-07-19 67 views
0

我有不同的textareas我希望在提交按鈕被激活之前完成的形式。我已經研究了這一點,並已經找到了如何指定特定的textareas /輸入,但依賴於用戶組將取決於顯示多少文本區域,所以我需要一個全屏javascript來檢查頁面上顯示的任何textareas是否填充過提交按鈕被激活。Javascript禁用提交,除非所有文本區域填充

我看了這個:http://jsfiddle.net/qKG5F/641/但是還沒有成功實現它自己。

(function() { 
$('form > input').keyup(function() { 

    var empty = false; 
    $('form > input').each(function() { 
     if ($(this).val() == '') { 
      empty = true; 
     } 
    }); 

    if (empty) { 
     $('#register').attr('disabled', 'disabled'); 
    } else { 
     $('#register').removeAttr('disabled'); 
    } 
}); 
})() 

難道這是因爲我如何創建了我的textareas?如圖所示,而不是使用<input>作爲示例的jsfiddle下面

<textarea name="i_2" id="i_2" class="input-block-level"></textarea> 

上述一樣。

如果不是所有的textareas已經被填充(沒有指定每個textarea),有沒有什麼辦法可以禁用提交按鈕?我使用JSFiddle示例相應地編輯了我的提交按鈕。

+0

一個textarea不是輸入字段。您可以通過爲所有元素提供一個類而不是將輸入元素用作選擇器來輕鬆解決此問題。 – Trace

+1

我可以看到您的完整html嗎? –

+0

不是'$('form> input')',而是使用'$('form')。children(':input')'來處理textareas –

回答

0

爲什麼你認爲textarea的輸入?這裏是當你有一種形式的輸入和textareas的情況下的代碼,並且如果其中一個輸入或textareas是空的,你希望該按鈕被禁用。輸入和textarea是不同的html元素!你不能用「輸入」選擇textarea。

(function() { 
    $('form > input, form > textarea').keyup(function() { 

     var empty = false; 
     $('form > input, form > textarea').each(function() { 
      if ($(this).val() == '') { 
       empty = true; 
      } 
     }); 

     if (empty) { 
      $('#register').attr('disabled', 'disabled'); 
     } else { 
      $('#register').removeAttr('disabled'); 
     } 
    }); 
})() 

僅適用於文字區域使用:

$('form > textarea') 

更好的方法是使用類的名稱,例如「must_be_filled」,這類分配給任何HTML元素。

的,你可以選擇通過要素:

$('form > .must_be_filled') 

試試這個:

http://jsfiddle.net/g0m79p81/

1

在HTML5中,您可以使用一個非常簡單的「required」命令在提交按鈕激活之前將任何表單元素設置爲必填字段。它消除了對任何不必要的JavaScript的需求。

<textarea name="i_2" id="i_2" class="input-block-level" required></textarea> 

試試看:)這樣的東西,這就是爲什麼我喜歡HTML5

+0

這不會解決他的問題,雖然..是的,他可以使用必需的但他的按鈕仍然不會被禁用等等 –