在提交表单之前,删除表单参数中的空值。

11 浏览
0 Comments

在提交表单之前,删除表单参数中的空值。

我有一些javascript代码,用于捕捉表单的变化,然后调用表单的常规提交函数。该表单是一个GET表单(用于搜索),在参数中有很多空属性。我想要做的是在提交之前删除任何空属性,以获得更干净的URL:例如,如果有人将“subject”选择更改为“english”,我希望他们的搜索URL是

http://localhost:3000/quizzes?subject=English

而不是

http://localhost:3000/quizzes?term=&subject=English&topic=&age_group_id=&difficulty_id=&made_by=&order=&style=

目前是这样的。这仅仅是为了使链接和人们的书签等更干净和有意义的URL。所以,我需要的是类似这样的东西,但这不对,因为我没有编辑实际的表单,而是从表单的参数创建了一个js对象:

  quizSearchForm = jQuery("#searchForm");
  formParams = quizSearchForm.serializeArray();
  //在提交之前从表单参数中删除任何空字段,以获得更干净的URL
  //这不起作用,因为我们没有改变表单,只是改变了从表单创建的对象。
  for (i in formParams) {
    if (formParams[i] === null || formParams[i] === "") {
      delete formParams[i];
    }
  }
  //提交表单

我想我离成功很近,但我错过了编辑实际表单属性的步骤,而不是创建另一个对象并对其进行编辑。

非常感谢任何建议-马克斯

编辑-已解决-感谢许多帮助我的人。这是我得到的解决办法,看起来完美运行。

function submitSearchForm(){
  quizSearchForm = jQuery("#searchForm");
  //禁用空字段,以免在URL中混乱
  quizSearchForm.find(':input[value=""]').attr('disabled', true);
  quizSearchForm.submit();
}

0