未选中时,验证未显示下拉列表的错误消息

时间:2017-08-16 20:43:28

标签: javascript jquery css

请耐心等待,因为我不确定我在这里做错了什么:

基本上我有一个表格,我有一些下拉列表。

如果我使用select list对我的下拉列表中的styleClass="requiredinpfield"进行硬编码,那么每当我不选择选项时,我会在select list下方弹出正确的验证错误消息从列表中,如果我尝试点击提交按钮。

但是,因为某些下拉列表并不总是必需的(它们仅在选择了某个选项时才需要)所以在这种情况下我并不是难以将这些选择列表编码为styleClass="requiredinpfield"而是我正在使用jQuery只要选择了关联单选按钮,就会将requiredinpfield类动态添加到列表对象。

我现在遇到的问题是,当我没有选择任何选项并尝试点击“提交”按钮时,这将不会显示验证错误消息。然而,它阻止我继续。它只是我没有看到错误消息。你能看出我做错了吗?

以下是我如何使用jQuery添加requiredinpfield类的示例,并且在需要时它没有向我显示验证错误消息:

HTML

<div id="fruitDivId">
    <apex:inputField id="testPickList" value="{!PickTheFruitYouLike__c}" styleClass="selectpicker"/>
</div>

用于确认需要列表的单选按钮

<apex:selectRadio value="{!DoYouLikeFruit}" onchange="whenAnOptionWasSelectedAndINeedToAddRequiredInpField(this.value,'fruitDivId');" styleClass="requiredinpfield radio pa-cus pa-cus-other">

添加requiredinpfield

的脚本
function whenAnOptionWasSelectedAndINeedToAddRequiredInpField(t,divId)
{
    if (t == 'Yes' ){
        $('[id$='+divId+']').show();
        $('[id$="testPickList"]').addClass('requiredinpfield');
    }
    else{
        $('[id$='+divId+']').hide();
        $('[id$="testPickList"]').removeClass('requiredinpfield');
    }     
} 

验证脚本

注意:我的提交按钮将触发!checkRequired()方法。

 function checkRequired(){
    var isValidate = true;
    //$('.errorIcon').css('opacity', '0');
    $('.requiredinpfield').each(function(){
        if($(this).is("select") && $(this).val() == ''){
            /*alert("Hello!!");*/
            if(!($(this).next('.requiredinpfield').first().next('.errorMsg').size()>0)){
                console.log($(this).next('.requiredinpfield'));
                $(this).next('.requiredinpfield').first().after('<div class="errorMsg"><strong></strong> You must select an option</div>');
            }
            isValidate = false;
        }
    else{

        if($(this).is("select") && (($(this).next('.requiredinpfield').first().next('.errorMsg').size()>0)))
        {
            $(this).next('.requiredinpfield').first().next('.errorMsg').remove();
        }
    }
    });
    //alert(isValidate);
    return isValidate;
}

1 个答案:

答案 0 :(得分:1)

假设代码的其余部分是正确的,问题可能在于您按ID选择元素的方式

在jQuery中,通过id选择一个元素只需写

$('#idoftheelement')

所以在whenAnOptionWasSelectedAndINeedToAddRequiredInpField函数中, 尝试更换

$('[id$='+divId+']')

$('#'+divId)

在您按ID选择的所有位置执行相同的操作。

相关问题