验证jsp中的两个serializeArray是否具有相同的值

时间:2017-07-11 07:50:50

标签: javascript jquery jsp

我在提交表单之前在UI中有一些带有来自DB的加载值的复选框,我想检查复选框是否具有相同值或未更改。 为此我有一个我在页面加载开始时定义的变量

existingform=$('input[name=products]').serializeArray();
每当更改名为" products"

的复选框列表中的值时,

和另一个变量

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

我尝试了以下内容,但它无法正常工作

if(existingform === newform)

如何确认这两个是否具有相同的值?

4 个答案:

答案 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))