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

il y a ma fonction, ce qui est dans mon contrôleur:Ruby on Rails: Pourquoi jQuery n'est pas défini?

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

mais quand tout cela est appelé, une alerte me dit:

RJS error: 

TypeError: Object object_name has no method 'val' 

même si je suis en utilisant jQuery 1.3 .2, les docs disent .val() n'est pas nouveau à 1.4 = \

Répondre

1

votre parenthèse sont un peu loin, ceci:

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

devrait être:

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

vous en train d'essayer d'appeler .val() sur la chaîne fieldID, plutôt que l'objet jQuery.


Un peu d'une tangente de la question ici: Si mise à niveau vers 1.4+ vous pouvez faire un peu plus court en passant une fonction à .val(), comme ceci:

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

merci pour le conseil 1.4. Au cours des deux prochaines semaines, je vais mettre à jour tout le javascript, je garderai cela à l'esprit. – NullVoxPopuli

0

Basé sur votre erreur, il me semble que fieldID n'est pas ce que vous pensez qu'il est. Avez-vous débogué en utilisant Firebug?