泛微OA javascript代码如何检查字段唯一性

泛微OA,前端流程录入发票号码,提交流程时先检查数据库是否存在该发票号码,存在就禁止提交,不存在才允许提交,实现这个验证发票唯一性的javascript代码该怎么写呢,field9882,字段fphm

数据库的话 应该是后端代码去查询 返回给前端JavaScript的

在后台接口中保存的时候,先判断唯一性。

这个工作就不应该在前端做。前端做的一般是数据的校验。

涉及到数据库的,放在后台判断更方便。根据判断返回相应的状态。进而就知道数据库中是否已经存在该值。

原谅我是小白,OA是第三方供应商的,我该怎么写接口呢,有详细的代码吗

你再保存的时候,调用查询所有发票号码的接口。然后遍历就行判断

又不知道你用什么写的,纯js?

加我把:q1571488201

发票号码是存储在服务器端的数据库中,必须是在服务器端才能检查是否存在该发票号码,不提交只用前端javascript代码检查是不可能的。

所以必须是提交之后在服务器端检查。


不过为了更好的用户体验可以在用户输入发票号码之后预先用ajax把发票号码提交到服务器端的一个验证发票唯一性的代码中,

然后前端javascript代码再根据验证发票唯一性的代码的返回结果来判断是否允许正式的提交。


你这个与利用AJAX查询判断用户名是否重复是类似的,可以借鉴一下

https://www.baidu.com/s?wd=ajax%E7%94%A8%E6%88%B7%E5%90%8D%E6%98%AF%E5%90%A6%E9%87%8D%E5%A4%8D


前端代码

<script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
	var submitFlag = false;
	$("#form1").submit(function(event){
		if (submitFlag==false) {
			alert("发票号码没有输入或发票号码已经存在");
			return false;
		}
		return true;
	});
	$("#code").change(function(event){
		var code = $(this).val();
		$.ajax({
			url: "验证发票唯一性代码接口的地址",
			type: "POST",
			data: {code:code},
			dataType: "text",
			success: function (data) {
				if (data=="true") {
					$("#codemsg").html('<font color="#060">发票号码可以使用</font>')
					submitFlag = true;
				} else {
					$("#codemsg").html('<font color="#f00">发票号码已存在</font>')
					submitFlag = false;
				}
			},
			error: function (jqXHR, status, thrown) {
				alert("error!!!");
			}
		});
	});
});
</script>
<form method="post" action="xxxxxxxxxxxx.php" id="form1">
	<p>发票号码:<input type="text" name="code" id="code" value="" /><span id="codemsg"></span></p>
	<input type="submit">
</form>


验证发票唯一性代码接口根据你服务器端代码的类型写一个数据库查询发票号码,并输出 "true" 或 "false"


var fphm = req.body.fphm
let sql = "select * from ‘表名’"
db.query(sql,function(err,results){
  let arr = JSON.parse(JSON.stringify(results))
  for(var i=0;i<arr.length;i++){
   if(arr[i].fphm== fphm){
   let r = {
     message:"已存在",
     status:0
  }
 res.end(JSON.stringify(r));
   return
   }
};
)}

唯一性的判断是在后台做的,通过查询数据库进行匹配返回信息给前端,你现在是要在前端代码中判断字段的唯一性?

解决没?没解决 加我微信 kings0211

验证发票唯一性代码接口根据你服务器端代码的语言类型写一个数据库查询发票号码,并输出 "true""false"
以PHP连接MySQL查询为例,其它的服务器端代码语言类型也是类似的。
<?php
header("Content-Type:text/html;charset=utf8"); //字符集,防止中文页面乱码

$mysql_server_name = "localhost:3306"; //数据库默认端口号
$mysql_username = "root"; //用户名
$mysql_password = "123456"; // 密码
$mysql_database = "test"//数据库名称
$conn = new mysqli($mysql_server_name, $mysql_username, $mysql_password, $mysql_database); //构建mysql函数

$code = $_POST["code"]; //获取输入的发票号码
$sql = $conn->query("select * from 表名 where 字段名='{$code}'"); //查询数据库中的发票号码,并返回集合
$row = mysqli_fetch_assoc($sql); //取其中一条

if ($row > 0) { //判断是否已存在
	echo "false";
} else {
	echo "true";
}
?>


他的oa 系统是买的人家的 他想加个验证,没有接口!也就是没有源代码!

不能修改后台代码那就没办法了

实在不行,用nodejs去查一下这个数据库表,在nodejs里判断唯一性,再把结果返回给js

所有的前端验证都只是好看好看好看而已,最有用最有用最有用就是数据库的约束。