2012-01-15 121 views
1

我有一个基于AJAX的应用程序,根据用户输入更新表单中的文本字段。文本字段定义如下:javascript document.getElementById()。value只适用于不带字符串的数字

<%= form.text_field :queue, {:class => "queue_class", :id => "queue", :size => 40} %> 

Javascript代码如下:

document.getElementById('queue').value = <%= @returned_value %> 

如果控制器,I设置@returned_value为数字,如:

@returned_value='77777777777' 

然后工作正常。但如果我将它设置为像一个字符串值:

@returned_value='abcxyz' 

那么它不工作,则文本字段不更新,我没有得到任何错误信息,就好像它什么都不做。

我也试过这样:

document.getElementById('queue').innerHTML = <%= @returned_value %> 

,但它不与任何返回的值工作,既当@returned_value='77777777777'也不时@returned_value='abcxyz'

可有人请点我什么我在这里失踪?

回答

1

你缺少报价:

document.getElementById('queue').value = '<%= @returned_value %>'; 

(它应该是JavaScript的转义为好。)

一个数字是不带引号合法的JavaScript表达式。任意字符串不是; JS会尝试将它解析为一个表达式(引用),再加上与JS相关的字符串中的其他内容。

+0

感谢戴夫,你救了我的天! – rh4games 2012-01-16 00:44:20

+0

@ rh4games没问题。只要确保JS-逃避它,以避免其他问题。 – 2012-01-16 00:46:30

+0

对不起戴夫,如何“JS逃脱”? – rh4games 2012-01-16 16:29:14

2

您需要在JavaScript中引用的字符串:

document.getElementById('queue').innerHTML = '<%= @returned_value %>'; 

号码来获得通过.toString()强制转换为字符串,但不带引号的字符串将抛出一个解析错误。

围绕该局表达
+0

感谢卡里姆,该工作 – rh4games 2012-01-16 00:45:08

0

JavaScript代码生成为稍后由JavaScript解释器调用的字符串。从而,。如果生成的字符串,你必须把引号它像这样:

document.getElementById('queue').value = '<%= @returned_value %>' 
+0

感谢Holger,解决了我的问题 – rh4games 2012-01-16 00:45:58

相关问题