我有一个inputField绑定到多选自定义字段。
我想验证用户是否从列表中选择最多3个项目,并且我想在用户立即选择第四个项目时(而不是在提交表单时)显示一条消息或警报。我发现actionSupport可以帮到我,但是我不确定它是否可以让我跟踪选择了多少项
<apex:inputField value="{!Agency_Profile.Destination_ Specialties}">
<apex:actionSupport event="onchange" action="{}" />
</apex:inputField>
最佳答案
使用JavaScript函数很容易。将此添加到您的页面中<script>
和</script>
标记之间:
var selected = {};
function validate(obj)
{
for (var i = 0; i < obj.options.length; i++) {
if (obj.options[i].selected) {
selected[obj.id+'_'+obj.options[i].value] = obj.options[i].label;
}
else {
selected[obj.id+'_'+obj.options[i].value] = null;
}
}
var size = 0;
for (var key in selected) {
if (selected[key] != null) { size++; }
}
//console.log(size);
if(size > 3){
alert("You can only select a maximum of three options.");
}
}
然后将您的
<apex:inputField>
更改为以下形式:<apex:inputField value="{!Agency_Profile.Destination_ Specialties}" onchange="validate(this);"></apex:inputField>
这是一个完整的示例Visualforce页面:
<apex:page >
<script>
var selected = {};
function validate(obj)
{
for (var i = 0; i < obj.options.length; i++) {
if (obj.options[i].selected) {
selected[obj.id+'_'+obj.options[i].value] = obj.options[i].label;
}
else {
selected[obj.id+'_'+obj.options[i].value] = null;
}
}
var size = 0;
for (var key in selected) {
if (selected[key] != null) { size++; }
}
//console.log(size);
if(size > 3){
alert("You can only select a maximum of three options.");
}
}
</script>
<apex:form >
<apex:selectList id="chooseColor1" size="5" multiselect="true" onchange="validate(this);">
<apex:selectOption itemValue="white" itemLabel="White"/>
<apex:selectOption itemValue="red" itemLabel="Red"/>
<apex:selectOption itemValue="orange" itemLabel="Orange"/>
<apex:selectOption itemValue="green" itemLabel="Green"/>
<apex:selectOption itemValue="blue" itemLabel="Blue"/>
</apex:selectList>
<apex:selectList id="chooseColor2" size="5" multiselect="true" onchange="validate(this);">
<apex:selectOption itemValue="white" itemLabel="White"/>
<apex:selectOption itemValue="red" itemLabel="Red"/>
<apex:selectOption itemValue="orange" itemLabel="Orange"/>
<apex:selectOption itemValue="green" itemLabel="Green"/>
<apex:selectOption itemValue="blue" itemLabel="Blue"/>
</apex:selectList>
</apex:form>
</apex:page>
关于javascript - 如何使用其onchange事件验证多选InputField?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12898027/