【问题标题】:Run Javascript on the h:outputtext value在 h:outputtext 值上运行 Javascript
【发布时间】:2015-08-23 01:32:41
【问题描述】:

在显示值 #{row.currentstring} 之前,我似乎无法让下面的代码运行 javascript。 下面是负责显示值的JSF代码

    <rich:column styleClass="#{row.displayClass}" >
        <f:facet name="header">
        <h:outputText value="#{bundle.currentvocab}" />
        </f:facet>
        <h:outputText id="vocab_value" value="get_vocab('#{row.currentString}')" styleClass="#{row.displayClass}" />
    </rich:column>

这里的 get_vocab 是我正在运行的 javascript,如下所示:

        function get_vocab(inp)
{
var b = "car";
var c = "propose";
var d = "check";
var x;
var y;
if (inp.indexOf(b) > -1) {
    x = inp.indexOf(b);
    y = inp.substring(0,x+3);
}
else if (inp.indexOf(c) > -1) {
    x = inp.indexOf(c);
    y = inp.substring(0,x+7);
}
else if (inp.indexOf(d) > -1) {
    x = inp.indexOf(d);
    y = inp.substring(0,x+5);
}
else {
    y = "value not found"
}
return y;
}

【问题讨论】:

    标签: javascript jsf


    【解决方案1】:

    您不能通过将javascript 设置为value 属性来运行它。如果您的javascript 包含在h:textOutput 下方,您可以获取该值并使用javascript 在客户端更改它。

    变化:

    function get_vocab(inp)
    {
      // ... rest of your logic ...
    }
    

    收件人:

    function get_vocab()
    {
      var span = document.getElementById("vocab_value");
      var inp = span.innerText;
      // ... rest of your logic without return ...
      span.innerText = y;
     }
    

    你的 jsf 代码

     <h:outputText id="vocab_value" value="#{row.currentString}" styleClass="#{row.displayClass}" />
    

    【讨论】:

    • 谢谢。将尝试更改并查看:)。如果有效,将投票并检查标记。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 2015-06-29
    相关资源
    最近更新 更多