- coffeescript's
@
- это просто сокращение для this.
Так, где у вашего исходного js есть:
if (input1.val().length <= 4 ...
ваш coffeescript должен иметь
if input1.val() <= 4
Если у вас есть $(this)
в вашем исходном js, вам все еще нужно $(this)
в вашем coffeescript.Поэтому
или @ input1.map (-> this.val (). Match (/ \ s + / g)). Длина не 0
должна быть:
or @input1.map(-> $(this).val().match(/\s+/g)).length not 0
Я не вижу никаких других проблем, попробуйте и посмотрим, сработает ли это, или все еще есть ошибки.
[Редактировать]
Были и другие проблемы, в основном связанные с not 0
, а также с брекетингом.Вот рабочий (я думаю) coffeescript:
if input1.val() <= 4 \
or (input1.map(-> $(this).val().match(/\s+/g)).length != 0) \
or (input1.map(-> $(this).val().match(/[^A-Za-z0-9]/g)).length != 0)
then input1.attr('id','error-highlight');
else input1.attr('id','success-highlight');
Это становится:
(function() {
if (input1.val() <= 4 || (input1.map(function() {
return $(this).val().match(/\s+/g);
}).length !== 0) || (input1.map(function() {
return $(this).val().match(/[^A-Za-z0-9]/g);
}).length !== 0)) {
input1.attr('id', 'error-highlight');
} else {
input1.attr('id', 'success-highlight');
}
}).call(this);
Что выглядит правильно.