onsubmit属性不起作用
onsubmit attribute not work
你好,我正在尝试使用onsubmit属性验证我的表单。但它不起作用。这个故事中最有趣的事情是,这在两天前才正常工作。表单标签:
<form action="../actionHandlers/registrationHandler.php" onsubmit="return validateRegistrationForm()" method="post" name="reg_form" enctype="multipart/form-data" id="reg_form">
验证功能:
function validateRegistrationForm() {
var errors = [];
if (document.forms['reg_form']['username'].value.length == 0) {
var usernameErrorMessage = localStorage.getItem('emptyLoginError');
errors.push(usernameErrorMessage);
}
if (document.forms['reg_form']['password'].value.length == 0) {
var passwordErrorMessage = localStorage.getItem('emptyPasswordError');
errors.push(passwordErrorMessage);
}
if (!validateEmail(document.forms['reg_form']['email'].value)) {
var emailErrorMessage = localStorage.getItem('emailInvalidError');
errors.push(emailErrorMessage);
}
if (errors.length > 0) {
var htmlErrors = '';
for (var i = 0; i < errors.length; i++) {
htmlErrors += errors[i] + "<br />";
}
document.getElementById("error_message").innerHTML = htmlErrors;
return false;
} else {
return true;
}
}
我的错误在哪里?请帮忙)
验证电子邮件:
function validateEmail(email) {
var pattern = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+'.([a-zA-Z])+([a-zA-Z])+/;
return pattern.test(email);
}
输入:
<div>
<label for="username" id="username_label"><?php echo $languageArray['USERNAME'] ?></label><span id="required_mark">*</span><br/>
<input type="text" name="username" id="username_field" class="input_form_fields">
</div>
<div>
<label for="password"><?php echo $languageArray['PASSWORD'] ?></label><span id="required_mark">*</span><br/>
<input type="password" name="password" id="password_field" class="input_form_fields">
</div>
<div>
<label for="email"><?php echo $languageArray['EMAIL'] ?></label><span id="required_mark">*</span><br/>
<input type="text" name="email" id="email_field" class="input_form_fields">
</div>
试试这个代码,我已经测试了它及其工作:
<form action="../actionHandlers/registrationHandler.php" onsubmit="return validateRegistrationForm()" method="post" name="reg_form" enctype="multipart/form-data" id="reg_form">
<div>
<label for="username" id="username_label"><?php echo (isset($languageArray['USERNAME']) ? $languageArray['USERNAME'] : "email"); ?></label><span id="required_mark">*</span><br/>
<input type="text" name="username" id="username_field" class="input_form_fields">
</div>
<div>
<label for="password"><?php echo (isset($languageArray['PASSWORD']) ? $languageArray['PASSWORD'] : "email"); ?></label><span id="required_mark">*</span><br/>
<input type="password" name="password" id="password_field" class="input_form_fields">
</div>
<div>
<label for="email"><?php echo (isset($languageArray['EMAIL']) ? $languageArray['EMAIL'] : "email"); ?></label><span id="required_mark">*</span><br/>
<input type="text" name="email" id="email_field" class="input_form_fields">
</div>
<input type="submit">
</form>
以及JS:
function validateEmail(email) {
var pattern = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+'.([a-zA-Z])+([a-zA-Z])+/;
return pattern.test(email);
}
function validateRegistrationForm(e) {
var errors = [];
if (document.forms['reg_form']['username'].value.length == 0) {
var usernameErrorMessage = localStorage.getItem('emptyLoginError') ? localStorage.getItem('emptyLoginError') : "username error";
errors.push(usernameErrorMessage);
}
if (document.forms['reg_form']['password'].value.length == 0) {
var passwordErrorMessage = localStorage.getItem('emptyPasswordError') ? localStorage.getItem('emptyPasswordError') : "password error";
errors.push(passwordErrorMessage);
}
if (!validateEmail(document.forms['reg_form']['email'].value)) {
var emailErrorMessage = localStorage.getItem('emailInvalidError') ? localStorage.getItem('emailInvalidError') : "email error";
errors.push(emailErrorMessage);
}
if (errors.length > 0) {
var htmlErrors = '';
for (var i = 0; i < errors.length; i++) {
htmlErrors += errors[i] + "<br />";
}
if(document.getElementById("error_message")){
document.getElementById("error_message").innerHTML = htmlErrors;
}
return false;
} else {
return true;
}
}
在我看来,问题是由以下任何一种原因引起的:
localStorage.getItem
注意到,您甚至没有检查密钥是否存在echo $languageArray['PASSWORD']
同样根本没有检查,尽管我确信这不是php错误,但在您回显之前检查一下是好的document.getElementById("error_message")
,那么你使用innerHTML
,但document.getElementById
我返回undefined
结论:
代码应该可以工作。
但是:
你说它以前工作过,我想你已经以某种方式接触了html,如果不是html,请检查localStorage键。
相关文章:
- JQuery示例不起作用-“;对象没有't支持属性或方法'按钮'&”;
- margin-left和width属性在mozillafirefox中不起作用
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- 在jQuery中链接时CSS属性不起作用
- 使用WebView中的javascript触发setVisibility属性;不起作用
- .split() 数据属性在应该工作的时候不起作用
- 函数中的 angularJS 访问对象属性不起作用
- 当我关联runat=“server”属性时,JQuery UI 按钮集在单选按钮上不起作用
- 属性选择器不起作用(语法错误、无法识别的表达式)
- 使用 Div 标签的 location.href 属性时,Eval 不起作用
- 当图像和链接是 json 对象属性的值时,它们不起作用
- 为什么 HTML 中的 Value 属性在与 AngularJS 中的 ng-model 一起使用时不起作用
- JQuery多属性筛选器不起作用
- 占位符属性嵌入IE中的iframe时不起作用
- 使用 css() 更改自定义属性不起作用
- $(this) 在 onclick 属性中不起作用
- 调用类属性不起作用
- 标签的属性在角度方向上不起作用
- 为什么onclick属性不起作用
- jQuery代码不起作用(属性不是函数)