【发布时间】:2016-11-16 15:44:48
【问题描述】:
我有一个动态行,最终用户可以在需要时附加额外的行。我还通过在插入之前查询表中的现有数据来限制数据库中的重复条目。如果用户输入序列号001然后提交,再尝试提交另一个序列号001,系统会返回错误。我现在遇到的问题是,如果用户同时在两个不同的行上输入序列号 001,则会绕过限制。有没有办法防止这个 php/ajax?或者这会落在js上吗?请网站一些简单的例子。提前致谢!
$(document).ready(function(){
var counter = 2;
$('.add-row').click(function() {
$(".item_form").append('<tr><td><input type="text" name="serialnoa[]" placeholder="serial no.' +
counter + '"/></td></tr>');
counter++; });
$('.del-row').click(function() {
if($(".item_form tr").length != 2)
{
$(".item_form tr:last-child").remove();
counter--;
}
else
{
alert("You cannot delete first row");
}
});
});
</script>
<!DOCTYPE html>
<html class="no-js" lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="_css/inventory.css?v=<?=time();?>">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<table class="item_form">
<tr>
<th>serial no.</th>
</tr>
<tr>
<td><input type="text" placeholder="serial no.1" name="serialnoa[]"></td>
</tr>
</table>
<table>
<tr>
<td><a href="#" class="add-row"><div>+ Row</div></td>
<td><a href="#" class="del-row"><div>- Row</div></td>
</tr>
</table>
</body>
</html>
【问题讨论】:
-
您是否尝试在数据库中为该列设置唯一索引?
-
如果我这样做,它会阻止它,是的,但如果我没记错,它不会返回错误。所以最终用户不会知道发生了什么。他们可能会认为一切都很好,却不知道他们在插入第二个项目序列号时出错了。
-
@MohitBhardwaj 感谢您提出任何建议。我想我找到了解决方案。使用 count(array_unique($array))
-
Mohit Bhardwaj 建议您可以创建一个 Unique 字段以在服务器端进行处理,并在客户端进行 js 验证以检查重复条目
-
@user3273700 在尝试了我找到的解决方案的所有可能性后,我也会尝试您的建议。谢谢你们的帮助!
标签: javascript php ajax