请耐心等待,因为我不确定我在这里做错了什么:
基本上我有一个表格,我有一些下拉列表。
如果我使用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;
}
答案 0 :(得分:1)
假设代码的其余部分是正确的,问题可能在于您按ID选择元素的方式
在jQuery中,通过id选择一个元素只需写$('#idoftheelement')
所以在whenAnOptionWasSelectedAndINeedToAddRequiredInpField
函数中,
尝试更换
$('[id$='+divId+']')
与
$('#'+divId)
在您按ID选择的所有位置执行相同的操作。