2010-08-02 2 views
0
function replaceIfEmpty(fieldID, value){ 
    alert($j('input#'+fieldID.val())); 
    if ($j('input#'+fieldID).val() == ""){ 
     $j('input#'+fieldID).val(value); 
    } 
} 

есть моя функция, и это в моем контроллере:Ruby on Rails: jQuery почему val не определен?

 page << "replaceIfEmpty('object_name', '#{t.name}');" 

, но когда все это вызывается, предупреждение говорит мне:

RJS error: 

TypeError: Object object_name has no method 'val' 

, даже если я использую JQuery 1.3 .2, документы говорят, что .val() не является новым для 1.4 = \

ответ

1

Вашей скобки немного прочь, это:

alert($j('input#'+fieldID.val())); 

Должен быть:

alert($j('input#'+fieldID).val()); 

В настоящее время вы пытаетесь вызвать .val() на строке fieldID, а не объект JQuery.


Немного касательной от вопроса здесь: Если обновления до 1.4+ вы можете сделать это немного короче, передавая функцию .val(), как это:

function replaceIfEmpty(fieldID, value){ 
    $j('#'+fieldID).val(function(i, oldVal) { 
    alert(oldVal); 
    return oldVal == "" ? value : oldValue; 
    }); 
} 
+0

спасибо за совет 1.4. В течение следующих нескольких недель я обновляю все javascript, я буду помнить об этом. – NullVoxPopuli

0

Основываясь на вашей ошибке, мне кажется, что fieldID не то, что вы думаете. Вы отлаживали Firebug?