【问题标题】:javascript - Two functions handling a formjavascript - 处理表单的两个函数
【发布时间】:2017-02-13 08:00:51
【问题描述】:

我需要一些 javascript 处理表单的帮助。我对此很陌生,不知道下一步该怎么做。我的表单有两个功能:一个用于检查数据是否正常,另一个用于将复选框合并到一个记录中。有没有办法将它们合并到一个函数中?

表格代码:

<form id="formularz_wspolpraca"   name="Zapis na poradnik" method="post" target="_top" onsubmit="return SprawdzFormularz(this)">
<input type="text" id="email" name="email"/>
<input type="text" id="imie" name="imie"/>
<input type="text" id="nazwisko" name="nazwisko"/>
<input type="text" maxlength="12" size="12" id="pole_1" name="pole_1"/>
<input class="checkbox_wspolpraca" type="Checkbox" name="pole_3a" value="polecajacy"> 
<input class="checkbox_wspolpraca" type="Checkbox" name="pole_3b" value="projektant"> 
<input class="checkbox_wspolpraca" type="Checkbox" name="pole_3c" value="instalator"> 
<input class="checkbox_wspolpraca" type="Checkbox" name="pole_3d" value="ekspert"> 
<input type="hidden" name="pole_3" id="pole_3">
<input id="pp" type="checkbox" name="pp" checked=""/>
<input type="submit"  value="Wyślij">
</form>

查询数据功能:

function SprawdzFormularz(f) {
  if (f.email.value == "") {
    alert("Nie poda\u0142e\u015b/a\u015b adresu e-mail.");
    return false;
  }
  if (((f.email.value.indexOf("@", 1)) == -1) || (f.email.value.indexOf(".", 1)) == -1) {
    alert("Poda\u0142e\u015b/a\u015b b\u0142\u0119dny adres e-mail.");
    return false;
  }
  if (f.imie.value == "") {
    alert("Wype\u0142nij pole Imi\u0119. ");
    return false;
  }
  if (f.nazwisko.value == "") {
    alert("Wype\u0142nij pole Nazwisko. ");
    return false;
  }
  if (f.pole_1.value == "") {
    alert("Wype\u0142nij pole Nr telefonu. ");
    return false;
  }
  if ((f.pole_3a.checked == false) && (f.pole_3b.checked == false) && (f.pole_3c.checked == false) && (f.pole_3d.checked == false)) {
    alert("Wybierz zakres wsp\u00f3\u0142pracy");
    return false;
  }
  if (f.pp.checked == false) {
    alert("Musisz zgodzi\u0107 si\u0119 z Polityk\u0105 Prywatno\u015bci.");
    return false;
  }
  form.submit();
  return true;
}

合并复选框功能:

var form = document.getElementById('formularz_wspolpraca');
try {
  form.addEventListener("submit", mergeFuntion, false);
} catch (e) {
  form.attachEvent("onsubmit", mergeFuntion);
}

function mergeFuntion(event) {
  event.preventDefault();
  var boxes = document.getElementsByClassName('checkbox_wspolpraca');
  var checked = [];
  for (var i = 0; boxes[i]; ++i) {
    if (boxes[i].checked) {
      checked.push(boxes[i].value);
    }
  }
  var checkedStr = checked.join(' ');
  document.getElementById('pole_3').value = checkedStr;

  return false;
}

期待你的回复,我很迷茫。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你可以简单地调用onsubmit中的两个函数:

    onsubmit="return SprawdzFormularz(this) && mergeCheckboxes(this)"
    

    如果要在检查功能失败的情况下运行合并功能,可以设置变量:

    onsubmit="check = SprawdzFormularz(this); merge = mergeCheckboxes(this); return check && merge"
    

    【讨论】:

    • 如果我这样做,检查功能可以正常工作,但合并不起作用。我应该更改函数代码中的某些内容吗?
    • 只有在检查函数成功的情况下才会运行合并代码,因为&amp;&amp;是一个短路操作符。
    • 当然我明白了,但即使检查成功合并也行不通。它发送空字段。也许有一种方法可以将这些功能合并为一个?
    • 我只是仔细查看了您的代码。为什么合并函数总是返回false
    • 我使用了对该主题stackoverflow.com/questions/17935869/… 的回复中的函数。它单独工作,但与另一个结合起来会产生一些问题。我在 javascript 中完全是绿色的,可能是一些菜鸟的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2019-08-19
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多