【问题标题】:validating form javascript验证表单 javascript
【发布时间】:2014-11-20 06:19:54
【问题描述】:

我有一个具有以下验证规则的表单:

<script type="text/javascript">
var errmsg;
function validate()
{
var textA= document.getElementById("text1");
var textC = document.getElementById("text3");
var txt1 = document.getElementById("text1").value;
var txt3 = document.getElementById("text3").value; 
var txt1_len = txt1.length;
var txt3_len = txt3.length;
	if(txt1_len == 0 || txt1_len > 50 || txt1_len < 10)
	{
		errmsg = "Error .";
		document.getElementById("ermsg").innerHTML = errmsg;
		textA.focus();
		return false;
	}
	
	else if(txt3_len == 0 || txt3_len > 30 || txt3_len < 10)
	{
		errmsg = "Invalid password!";
		document.getElementById("ermsg").innerHTML = errmsg;
		textC.focus();
		return false;
	}
	
	
	else
	{
		return true;
					
	}
	
return false;
}

</script>

如果用户在第一个字段中输入的字符少于 10 个,这些规则会提醒用户。我想知道如果他没有在该字段中输入某些字符,我是否也可以提醒用户。

例如,如果用户输入 mynamehere,我希望他输入 my-name-here,并限制用户在该字段中输入电子邮件地址。

我怎样才能使用这些规则来实现呢?

谢谢

【问题讨论】:

  • 我不明白您要实施什么附加规则...用户在哪里输入“mynamehere”:text1?与“mynamehere”相比,“my-name-here”是什么?......
  • 是的,他在 txt1 中输入了用户名。 mynamehere 与 my-name-here 相比具有 - 字符。所以他应该用 - 输入正确的表格
  • 所以只要在对应的if中添加对应的规则即可。例如:if(txt1_len == 0 || ... || !/.+-.+-/.test(txt1))(我使用了一个正则表达式在该字段中寻找 2 个-),并且对于具有相应正则表达式的电子邮件字段也是如此(例如参见 stackoverflow.com/a/46181/1127669
  • 有什么方法可以在我的例子中告诉我吗?
  • if(txt1_len == 0 || txt1_len > 50 || txt1_len

标签: javascript php validation


【解决方案1】:

我已获取您的 sn-p 并对其进行编辑:

var errmsg;

function validate() {
  var textA = document.getElementById("text1");
  var textC = document.getElementById("text3");
  var txt1 = document.getElementById("text1").value;
  var txt3 = document.getElementById("text3").value;
  var txt1_len = txt1.length;
  var txt3_len = txt3.length;
  var $err = document.getElementById("ermsg");

  $err.innerHTML = "Everything is ok!";
  $err.style.color = "black";


  if (txt1_len == 0 || txt1_len > 50 || txt1_len < 10 || !/.+-.+-/.test(txt1)) {
    errmsg = "Error .";
    $err.innerHTML = errmsg;
    $err.style.color = "red";
    textA.focus();
    return false;
  } else if (txt3_len == 0 || txt3_len > 30 || txt3_len < 10 || !validateEmail(txt3)) {
    errmsg = "Invalid password!";
    $err.innerHTML = errmsg;
    $err.style.color = "red";
    textC.focus();
    return false;
  } else {
    return true;

  }

  return false;
}

function validateEmail(email) {
  var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9] {1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  return re.test(email);
}
<input type="text" id="text1" />

<input type="text" id="text3" />

<button onclick="return validate();">Validate</button>

<p>
  <div id="ermsg"></div>
</p>

测试在txt1txt3 的条件末尾:

!/.+-.+-/.test(txt1)

!validateEmail(txt3)

编辑:

text1 字段的规则似乎是:文本只能包含数字/字母/减号。

所以你可以改变规则:

/^[a-z0-9\-]+$/i.test(txt1)

网上有很多RegExp教程,例如:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

【讨论】:

  • 邮件功能是验证还是不验证?我的意思是,如果他输入电子邮件不进行验证,我需要在 txt1 中。我认为我们也可以输入一个规则,只允许他输入 - 字符而不是其他任何内容
  • 邮件功能是用来检查邮件是否正确的,所以我否定了。但是对于规则,我不知道你的规则是什么!我什至不知道txt1txt3应该是一个电子邮件字段,...我只是举个例子,在你必须适应你的规则之后!
  • - char 完美运行 非常感谢!字段只能包含数字和字母,而 - char 只能是其他字符。所以如果他输入 me@me.com 它应该在任何字段上得到错误。
  • 该规则是否也允许我输入至少 3 个字符?
  • 否,但也许您也可以尝试找到此规则? :-)
猜你喜欢
  • 2015-12-04
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 2011-01-20
相关资源
最近更新 更多