2013-08-30 3 views
3

не Попытка добавить класс для всех элементов ввода unless, что вход элемента type == 'submit'CoffeeScript: как addClass если

$('input, textarea') -> 
    unless $(@).getAttribute('type').val == "submit" 
    $(@).addClass('form-control') 
комплект

My Javascript отладки не очень развит ... поэтому вынужден расшифровать загадочные ошибки:

[Error] TypeError: '[object Object]' is not a function (evaluating '$('input, textarea')') 
    ready (disk_files.js, line 37) 
    dispatch (jquery.js, line 5096) 
    handle (jquery.js, line 4767) 
    dispatchEvent 
    triggerEvent (turbolinks.js, line 199) 
    onload (turbolinks.js, line 45) 
+1

CoffeeScript синтаксис хорошо, я предположил бы, что проблема в том, что бы ни 'getAttribute' делает не то, что вы ожидаете. Предлагаю ознакомиться с документацией. Изменить. Если это jQuery, убедитесь, что библиотека загружается правильно. – asawyer

+1

Это jQuery или что-то подобное с синтаксисом? $ (select) (function) неверно, если это jQuery. – asawyer

+1

Ошибка исходит из строки '$ ('input, textarea') ->', что означает, что вы вызываете возвращаемый объект jQuery и передаете ему функцию, которая неверна. Кроме того, в любое время, когда вы проверяете атрибуты элемента, используйте '.attr (name)' и в зависимости от версии '.prop (name)' для свойств классов DOM. –

ответ

6
$('input[type!=submit], textarea').addClass('form-control') 
0

Это должно работать:

$input = $('input, textarea') 
$input.addClass('form-control') unless $input.attr('type') == 'submit' 
1

Вы можете сделать это с помощью селектора CSS-стиля:

$('input:not([type="submit"]), textarea').addClass('form-control') 
Смежные вопросы