Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得<;p:选择一个功能表>;在jquery中?_Javascript_Jquery_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Javascript 如何获得<;p:选择一个功能表>;在jquery中?

Javascript 如何获得<;p:选择一个功能表>;在jquery中?,javascript,jquery,jsf,jsf-2,primefaces,Javascript,Jquery,Jsf,Jsf 2,Primefaces,嗨,我正试图从jquery中获取p:selectOneMenu的值,但我还没有得到。我使用JSF和primefaces作为我的UI组件 <p:selectOneMenu style="width:150px" id="skill" value="#{loginBean.skill}" required="true" immediate="true" requiredMessage="Select your skill"

嗨,我正试图从jquery中获取p:selectOneMenu的值,但我还没有得到。我使用JSF和primefaces作为我的UI组件

    <p:selectOneMenu style="width:150px" id="skill"
                value="#{loginBean.skill}" required="true" immediate="true"
                requiredMessage="Select your skill" label="skill" styleClass="someClassName">
                <f:selectItem itemLabel="Select" itemValue=""></f:selectItem>
                <f:selectItem itemLabel="Other" itemValue="Other"></f:selectItem>
                <f:selectItems value="#{loginBean.skillList}" var="item"
                    itemLabel="#{item}" itemValue="#{item}"></f:selectItems>
            </p:selectOneMenu>
在警报框中,我得到的是[object],但不是所选的值

然后我试了一下

   var $element = $('.someClassName').val();

alert($element);
但现在我得到了一个空警报框

然后我试了这个

 var $element = $("select[name='skill_input']:selected").val();

alert($element);
我的警报框显示未定义

我还应该做些什么来获取该警报框中的选定值…?

试试这个

var $element = $("select[name='skill_input'] option:selected").val();

alert($element);

我没有真正使用过Jquery,但如果您想使用简单的javascript解决方案,那么欢迎您使用:

var selectedValue = document.getElementById("MyForm:skill").value

MyForm
是可以在其中找到selectOneMenu组件的表单id。当然,您需要选择一个菜单id。

您需要选择一个值不为空的选项,或者将第一个选项的值设置为“空”之类的值

  • 默认情况下,第一个选项被选中,并且在代码中它有一个空值-因此您不会显示任何内容

定义
widgetVar
并使用PrimeFace框架获取价值

<p:selectOneMenu widgetVar="foo" style="width:150px" id="skill"
    value="#{loginBean.skill}" required="true" immediate="true"
    requiredMessage="Select your skill" label="skill" styleClass="someClassName">
        <f:selectItem itemLabel="Select" itemValue=""></f:selectItem>
        <f:selectItem itemLabel="Other" itemValue="Other"></f:selectItem>
        <f:selectItems value="#{loginBean.skillList}" var="item"
                    itemLabel="#{item}" itemValue="#{item}">
        </f:selectItems>
</p:selectOneMenu>

// Call it in your JS
console.log(PF('foo').getSelectedValue());

//在JS中调用它
log(PF('foo').getSelectedValue());

否,我已选择包含值的选项。但是迪恩得到了。。现在我用dereli给出的上述解得到了。。无论如何,也感谢您的回复。好的,对不起,我没有看到在父元素后面没有空格,但是这个$('skill_input').val()应该可以工作;你从来没有为你的选择定义过一个类,也许这是个问题?[$('.someClassName').val();]我已经尝试过了,但无法得到解决方案,现在我通过dereli给出的解决方案得到了解决方案,无论如何,非常感谢。为了避免混淆,问题中的“Html”部分指的是翻译后的primefaces部分。因此,它不是实际代码的一部分,但它有助于找到答案。因此,在@dereli的回答中,以下名称='skill\u input'用于指代。如果有,解决方案将是:var$element=$(“选择[name='anylabel_input']选项:selected”).val();看看这个:
var selectedValue = document.getElementById("MyForm:skill").value
<p:selectOneMenu widgetVar="foo" style="width:150px" id="skill"
    value="#{loginBean.skill}" required="true" immediate="true"
    requiredMessage="Select your skill" label="skill" styleClass="someClassName">
        <f:selectItem itemLabel="Select" itemValue=""></f:selectItem>
        <f:selectItem itemLabel="Other" itemValue="Other"></f:selectItem>
        <f:selectItems value="#{loginBean.skillList}" var="item"
                    itemLabel="#{item}" itemValue="#{item}">
        </f:selectItems>
</p:selectOneMenu>

// Call it in your JS
console.log(PF('foo').getSelectedValue());