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