我在提交表单之前在UI中有一些带有来自DB的加载值的复选框,我想检查复选框是否具有相同值或未更改。 为此我有一个我在页面加载开始时定义的变量
existingform=$('input[name=products]').serializeArray();
每当更改名为" products" 的复选框列表中的值时,和另一个变量
var newform = $('input[name=products]').serializeArray();
我尝试了以下内容,但它无法正常工作
if(existingform === newform)
如何确认这两个是否具有相同的值?
答案 0 :(得分:1)
您可以使用JSON.stringify
。
if(
JSON.stringify(existingform.sort()) ===
JSON.stringify(newform.sort())
);
我还在字符串化之前对数组进行排序以防万一。 我希望这会有所帮助。
答案 1 :(得分:1)
使用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>
答案 2 :(得分:0)
更好的方法是从数据库中获取值,反序列化并进行比较。
其他替代方法是在隐藏元素的表单中保存以前的值,并在后端进行比较。
答案 3 :(得分:0)
试试这个:
if(JSON.stringify(existingform) === JSON.stringify(newForm))