2012-01-25 133 views
1

我有一个JSF页面,一个下拉式的值从服务获取的地方。 默认为“从下拉列表中选择”和一个datePicker和一个提交按钮。多个onClick事件

我需要在这里应用JS/AJAX验证。

如果用户点击提交按钮,而没有从下拉菜单和日期中选择任何值。它应该首先显示一条消息,

1)如果没有选择,首先显示一条消息 - 请从下拉列表中选择一个值。

2)如果从下拉列表中选择了该值,但未选择日期,则应显示消息“选择日期”。

3)如果选择了日期并且没有从下拉菜单中选择值它应该显示一条消息“从下拉菜单中选择一个值”。

两个验证都应该在提交按钮上单击完成。

目前只是检查是否选择日期。 onclick事件代码在下面提到。

下拉

<h:selectOneMenu id="valueList" value="#bean.values"> 
    <f:selectItem itemValue="Select Action" itemLabel="Select Action" /> 
    <f:selectItems value="#{sampleService.sampleMethod}" 
    var="SampleVar" itemValue="#{SampleVar}" 
    itemLabel="#{SampleVar}"> 
    </f:selectItems> 
</h:selectOneMenu> 

提交按钮

<ui:define name="actions"> 

----h:inputHidden id="getAllDates" 
value="#{serviceMethod.getAllDates}"----- 
    <h:commandButton styleClass="inputbutton" valuGenerate" id="export" 
    action="#{generate.someReport}" onclick="saveDate(); /> 
    </ui:define> 

传递所有选定日期的隐患。 OnClick事件这个js函数被写入另一个文件。

onclick =“saveDate();”

function saveDate() { 
    var dates = $('#selectDates').datepick('getDate'); 
    var datesValue = ''; 
    if(dates==null || dates=="undefined"){ 
    alert("Select Dates"); 
    return false; 
    } 
    if(dates!=null){ 
// store in an array and return true 
    } 

目前网页获得刷新每点击提交按钮,并得到唯一的日期显示警告信息。

任何人都可以帮助我应用Ajax调用提交按钮并显示验证消息吗?

回答

2

你想得太多了在JavaScript方向。使用JSF提供的工具。使用required属性指定所需的输入。使用requiredMessage属性指定验证消息。使用<h:message>显示验证消息。使用<f:ajax>通过ajax提交(并验证)数据。

所以,这应该这样做:

<h:selectOneMenu id="action" binding="#{action}" value="#{bean.action}" required="true" requiredMessage="Please select action"> 
    <f:selectItem itemValue="#{null}" itemLabel="Select Action" /> 
    <f:selectItems value="#{bean.actions}" /> 
    <f:ajax execute="@this" render="actionMessage date" /> 
</h:selectOneMenu> 
<h:message id="actionMessage" for="action" /> 

<x:yourDatePickerComponent id="date" value="#{bean.date}" required="#{not empty action.value}" requiredMessage="Please select date"> 
    <f:ajax execute="@this" render="dateMessage" /> 
</x:yourDatePickerComponent> 
<h:message id="dateMessage" for="date" /> 

(我不知道你使用的日期选择器是什么零部件,只需更换相应x:yourDatePickerComponent

+0

谢谢您的回复,我编辑了我的问题。 这不起作用。 – Namita

+0

在上面的例子中,它是为''。在你的例子中,你有一个''。相应地更改/对齐。应该清楚应该如何使用''。 – BalusC

0

你不需要阿贾克斯:

function save() { 
    var validated = true; 
    var dates = $('#selectDates').datepick('getDate'); 
    var datesValue = ''; 

    var message; 
    if(dates==null || dates=="undefined"){ 
     alert("Select Dates"); 
     message = "message1"; 
     validated = false; 
     return false; 
    } 

    if($('#idOfDropDown').val() != ''){ 
     message = "message2"; 
     validated = false; 
     return false; 
    } 

    if(!validated){ 
     // preveent thr form from submitting 
     return false; 
    } 
} 
+0

艾哈迈德,页面会得到验证后刷新信息出现。 感谢您的回复.... – Namita