gpt4 book ai didi

javascript - 如何使用 onchange 事件验证多选 InputField?

转载 作者:行者123 更新时间:2023-11-30 05:54:18 26 4
gpt4 key购买 nike

我有一个绑定(bind)到多选自定义字段的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com