jQuery函数没有在按钮点击时从JSF调用

时间:2012-02-08 07:28:06

标签: jquery jsf-2

我有一个带有函数的jQuery文件。当我的页面加载然后我的脚本运行。意味着它被调用。这是我的jQuery文件。

(function($){

    var $firstPara = $('p').eq(1);
    $firstPara.hide();

    function checkValidation() {

        var labelElementArray = $("label.mandotary");
        var inputElementArray = $("input.mandotary");
        var selectElementArray = $("select.mandotary");

        $.each(inputElementArray, function(index, element){

            var text = $(element).text();


        }); //end of $.each(inputElementArray, fn)

        $.each(selectElementArray, function(index, element) {

            ////nothing

        }); //end of  $.each(selectElementArray, fn)

    } //end of function checkValidation()

})(jQuery); //end of (function($){}

我有带按钮的JSF表单。

<h:head>
    <title>Facelet Title</title>
    <h:outputScript library="javascripts" name="jquery.js"  target="body"/>
    <h:outputScript library="javascripts" name="validation.js" target="body"/>

</h:head>

<h:body>

    <h:form id="validationFrom" >

        <h:commandButton id="saveButton"
                         value="Save"
                         onclick="checkValidation()"/>


        <h:commandButton id="cancelButton"
                         value="Cancel" />

    </h:form >

</h:body>

现在当我点击“保存”按钮时,它表示checkValidation()函数未定义。为什么? 我在这里做错了什么?

由于

2 个答案:

答案 0 :(得分:2)

尝试删除

(function($){

})(jQuery); //end of (function($){}

来自js文件

而是用这个地方包装你的js代码

$(document).ready(function() {

});

还有一件事

编辑:

将此添加到页面的头部

    <h:outputScript library="primefaces" name="jquery/jquery.js"
        target="head" />
    <h:outputScript target="head">
        $ = jQuery;
    </h:outputScript>

为了在你的jQuery代码中使用$

答案 1 :(得分:1)

Welp,我不知道JSF是什么,除了我刚刚做的少量谷歌搜索,我也不熟悉你正在使用的一些jQuery语法。假设您可以像任何常规的旧html页面一样对抗JSF页面,这就是我将如何做...

$(function() {
    // Do any work you want to occur when the DOM is ready here.

    $("#saveButton").click(checkValidation);
}

function checkValidation() {
    // Check validation here
} 

然后摆脱JSF中的onclick位。