如何一次检查多个变量输入以确保正则表达式正常工作?每当我输入任何内容时,表单都会提交并且不会发出任何警报。
我也试过了正则表达式验证的test()方法,但仍然没有运气。
我正在尝试使用以下正则表达式验证用户输入,该正则表达式将不是数字或空格的任何内容视为错误输入。
var format=/^(\s*|\d+)$/;
它只接受文本框中的数字和空格。
以下javascript就是我所拥有的:
var pitch = document.getElementById("pitch");
var chisel = document.getElementById("chis");
var saw = document.getElementById("saw");
//var arguments = [chisel, saw, pitch];
var format = /^(\s*|\d+)$/;
function regexTest() {
if (!chisel.match(format) && !saw.match(format) && !pitch.match(format)) {
alert("Repressed Action");
return false;
} else {
alert('Thank you');
}
}

<div class="lab">
<form method="post" action="http://weblab.kennesaw.edu/formtest.php">
Chisels: <input type="text" name="chisels" id="chis" size="5" /> Saw: <input type="text" name="saw" id="saw" size="5" /> Pitchfork: <input type="text" name="pitchfork" id="pitch" size="5" />
<br /> Customer Name: <input type="text" name="customer name" size="25" />
<br /> Shipping Address: <input type="text" name="shipping address" size="25" />
<br /> State:
<input type="radio" id="master" name="card" value="master" /><label for="master">MasterCard</label>
<input type="radio" id="american" name="card" value="american" /><label for="american">American Express</label>
<input type="radio" id="visa" name="card" value="visa" /><label for="visa">Visa</label>
<br />
<input type="reset" value="Reset" />
<div class="lab">
<button onclick="regexTest()">Submit</button>
<button onclick="return false">Cancel</button>
</div>
&#13;
答案 0 :(得分:0)
您的代码存在许多问题,下面我重构了它,使其更易于阅读,因此可行。
验证侦听器应位于表单的提交处理程序上,而不是提交按钮,因为可以在不单击按钮的情况下提交表单。此外,如果您将对表单的引用传递给侦听器,则按名称访问表单控件会更容易。
您应该在提交发生时获取表单控件的值,而不是之前。您的代码在用户完成任何操作之前(可能在表单存在之前)立即获取值,因此将该代码放在侦听器函数中。
最后,正则表达式需要匹配任何不是空格或数字的东西,所以:
/[^\s\d]/
似乎合适。但是,如果字段为空(这些字段不包含非数字或非空格),这仍然允许表单提交。你需要为此添加一个测试。
function regexTest(form) {
// Get values when the function is called, not before
var pitch = form.pitchfork.value;
var chisel = form.chisels.value;
var saw = form.saw.value;
// Test for anything that's not a space or digit
// var format = /^(\s*|\d+)$/;
var format = /[^\s\d]/;
if (format.test(chisel) || format.test(pitch) || format.test(saw)) {
// There must be at least one non-space or non-digit in a field
alert("Repressed Action");
return false;
} else {
alert('Thank you');
// return false anyway for testing
return false;
}
}
<div class="lab">
<form onsubmit="return regexTest(this)">
Chisels: <input type="text" name="chisels" id="chis" size="5"><br>
Saw: <input type="text" name="saw" id="saw" size="5"><br>
Pitchfork: <input type="text" name="pitchfork" id="pitch" size="5"><br>
Customer Name: <input type="text" name="customer name" size="25"><br>
Shipping Address: <input type="text" name="shipping address" size="25">
<br> State:
<select name="states">
<option>Florida</option>
<option>Georgia</option>
<option>Alabama</option>
</select>
<br>
<input type="radio" id="master" name="card" value="master"><label for="master">MasterCard</label>
<input type="radio" id="american" name="card" value="american"><label for="american">American Express</label>
<input type="radio" id="visa" name="card" value="visa"><label for="visa">Visa</label>
<br>
<input type="reset" value="Reset">
<div class="lab">
<button>Submit</button>
<button onclick="return false">Cancel</button>
</div>
希望这能让你进入下一步。