验证 jsp 中的两个序列化数组是否具有相同的值



我有一些复选框,其中包含一些从数据库加载的值,在提交表单之前,我想检查复选框是否具有相同的值或保持不变。 为此,我有一个在页面加载开始时定义的变量

existingform=$('input[name=products]').serializeArray();

以及另一个变量,每当更改名为"产品"的复选框列表中的值时

var newform = $('input[name=products]').serializeArray();

我已经尝试了以下方法,但它不起作用

if(existingform === newform)

如何验证这两者是否具有相同的值?

使用JSON.stringify

$('input[name=products]').val('foo');
var existingForm = JSON.stringify($('input[name=products]').serializeArray());
$('button').on('click', () => {
var newForm = JSON.stringify($('input[name=products]').serializeArray());
console.log(existingForm === newForm);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="products"/>
<button>Check if same</button>

您可以使用JSON.stringify.

if(
JSON.stringify(existingform.sort()) ===
JSON.stringify(newform.sort())
);

为了以防万一,我还在字符串化之前对数组进行排序。 我希望这有所帮助。

更好的方法是从数据库中获取值,反序列化并进行比较。

其他替代方法是将以前的值保存在带有隐藏元素的表单中,并在后端进行比较。

试试这个:

if(JSON.stringify(existingform) === JSON.stringify(newForm))

相关内容

最新更新