javascript - Jquery自动完成:如何防止选择重复
问题描述
select: function()
如果先前选择了特定的 ID ,我想防止重复选择。我想防止roll No
我的代码重复如下。
select: function( event, ui ) {
//var item = ui.item.data;
id_arr = $(this).attr('id');
id = id_arr.split("_");
$('#rollNumber_'+id[1]).val(ui.item.data.rollNumber);
$('#name_'+id[1]).val(ui.item.data.name);
$('#class_'+id[1]).val(ui.item.data.class);
}
HTML
<div id="students">
<div id="first">
<input type="number" id="rollNumber_1" >
<input type="text" class="name" id="name_1" >
<input type="text" id="class_1" >
</div>
<div id="second">
<input type="number" id="rollNumber_2" >
<input type="text" class="name" id="name_2" >
<input type="text" id="class_2" >
</div>
</div>
解决方案
防止重复
可以有许多不同的方法,这取决于代码逻辑和情况。从当前的情况和代码中,我看到了两种方法。
- 当您设置 $('#rollNumber_'+id[1]) 的值时,您可以验证 Value 是否为空。如果为空则表示用户是第一次选择它。:D
- 将选定的 Id 保存在 Array 或 Dom 中。
让我给一个示例演示
方法一
select: function( event, ui ) {
id_arr = $(this).attr('id');
id = id_arr.split("_");
/* Logic goes here */
var rollNoVal = $('#rollNumber_'+id[1]).val();
if(rollNoVal != '') {
console.log('Duplicate selection is not allowed');
return;
}
/* Logic done here */
$('#rollNumber_'+id[1]).val(ui.item.data.rollNumber);
$('#name_'+id[1]).val(ui.item.data.name);
$('#class_'+id[1]).val(ui.item.data.class);
}
方法二
var selectedStudents = [];
select: function( event, ui ) {
id_arr = $(this).attr('id');
id = id_arr.split("_");
/* Logic goes here */
var inArrayExists = selectedStudents.indexOf(ui.item.data.rollNumber);
if(inArrayExists != -1) {
console.log('Duplicate selection is not allowed');
return;
}
// Push to an array
selectedStudents.push(ui.item.data.rollNumber);
/* Logic done here */
$('#rollNumber_'+id[1]).val(ui.item.data.rollNumber);
$('#name_'+id[1]).val(ui.item.data.name);
$('#class_'+id[1]).val(ui.item.data.class);
}
推荐阅读
- c - 在 C 中使用 scanf;%i 和 %d 在签名或未签名的问题上是否相同?
- python - 我有两个(.py)文件。当第一个程序结束时,它会自行关闭,然后打开并运行第二个程序文件。我该怎么做?
- java - java.util.ServiceConfigurationError: org.apache.juli.logging.Log: org.eclipse.jetty.apache.jsp.JuliLog 不是子类型
- tensorflow2.x - Tensorflow 2.2 和 cudnn 8.0.3 不能正常工作。它仍然在寻找 cudnn 7.6.5 dll 文件
- kubernetes - Ngnix Ingress Controller 提供长期支持
- c++ - cpp 中的递归函数给出错误“分段错误(核心转储)”
- python - 将每行中的多个 csv 元素读取到单独的列表中
- python - Python sqlite3 和查询优化的问题
- android - Flutter:如何在 Flutter 小部件中显示 Android 片段
- wxwidgets - WxSocket(未在此范围内声明)