【问题标题】:Check to see if text input field was skipped when form is submitted?检查提交表单时是否跳过了文本输入字段?
【发布时间】:2012-03-19 21:31:47
【问题描述】:

我有一个带有文本输入的表单,我正在检查在提交表单时是否有任何跳过的文本输入,并有一个警告说行被跳过,他们需要在表单可以填写之前填写它们已提交。

这是我正在使用的代码,如果最后一行为空白,我会收到一个错误,即 nextEmptyLine 未定义。

我得到的 lin 是该文本输入的行数

var emptyLine = eval('document.forms.mainForm.itemLine_1_' + lin).value;
var nextEmptyLine = eval('document.forms.mainForm.itemLine_1_' + [lin+1]).value;    

if((emptyLine == "") && (nextEmptyLine != ""){
    alert("You seem to have skipped a line. Please go back and close up the lines. We do not allow for skipped lines." );
    submitOnce=false;
    return false;
}

【问题讨论】:

  • 如果您可以使用框架,我建议您使用 jQuery 和 jQuery validate 插件。那么您将免费获得此功能。
  • 哇,加载一个 100KB,4000 行的脚本加上插件加上验证码来替换一个 10 行的函数。

标签: javascript text input


【解决方案1】:
>  var emptyLine = eval('document.forms.mainForm.itemLine_1_' + lin).value;

哇,真正的黑暗时代代码,你从哪里挖出来的? eval 的合理用途很少。作为一般规则,永远不要使用它。

要检查每个 textarea 元素是否具有空字符串或所有空格以外的值,请在表单上使用提交侦听器:

<form onsubmit="return checkTextareas(this);" ...> 
  ...
</form>

那么函数就是:

function checkTextareas(form) {
  var tas = form.getElementsByTagName('textarea');
  var re = /^\s*$/;

  for (var i=0, iLen=tas.length; i<iLen; i++) {
    if (re.test(tas[i].value)) {
      // textarea has only whitespace or nothing in its value
      // Tell the user why submit failed
      alert('Ooops! You missed a line');
      return false;
    } 
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多