RJS:检查现有的页面元素?

时间:2009-03-10 14:57:41

标签: javascript ruby-on-rails prototype rjs

我有一个id为“foo”的文本字段,有时存在,有时不存在。如果它存在,我想填写一定的价值。

如何使用 RJS (在 Rails 2.2 中)执行此操作?

我尝试过这个并不起作用:

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

我得到了

  

TypeError:如果文本字段不存在则为空值

2 个答案:

答案 0 :(得分:6)

我已经多次出现这种情况,我有一个条件项,如果存在则需要对其进行操作。使用page.select可以避免Null Value错误。

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

我把它放在我的* .js.rjs文件中。当select向每个数组发送一个空数组时,它会返回任何内容而不是当在页面上没有具有正确ID的DOM对象时直接通过id选择时得到的TypeError。

答案 1 :(得分:1)

我认为你不能从RJS。作为一种解决方法,您只需从RJS调用javascript方法来检查元素是否存在。

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

Javascript ..

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

修改

修复了红宝石部分..