2009-03-10 4 views
3

У меня есть текстовое поле с id «foo», которое иногда существует, а иногда нет. Если он существует, я хотел бы заполнить определенное значение.RJS: проверить существующий элемент страницы?

Как это можно сделать, используя RJSRails 2.2)?

Я попробовал это, и это не работает:

if page[:foo] 
    page[:foo].value = "bar" 
end 

Я получаю

TypeError: Null Value if the textfield doesn't exist

.

ответ

6

Я пришел на это много раз, когда у меня есть условный элемент, который необходимо действовать, если он существует. Использование page.select позволяет избежать ошибки Null Value.

page.select('#dom_object_id').each do |element| 
    element.value = "bar" 
    end 

Я поместил это в свой файл * .js.rjs. Когда выбор отправляет пустой массив каждому, он не возвращает ничего вместо TypeError, которое вы получите при прямом выборе по идентификатору, если на странице нет объекта DOM с правильным идентификатором.

+0

Большое спасибо за решение RJS! – Javier

1

Я не думаю, что вы можете использовать RJS. В качестве обходного пути вы можете просто вызвать javascript-метод из RJS, который проверяет, существует ли этот элемент.

page << "update_foo('#{my_value}');" 

Javascript ..

function update_foo(val) 
{ 
    if($('foo') != undefined) 
    { 
    $('foo').value = 'bar'; 
    } 
} 

Редактировать

Fixed рубин часть ..

+0

Работает как очарование (кроме того, нет необходимости использовать «! = Undefined»). Пока в RJS нет решения, это было бы моим решением. – Javier

Смежные вопросы