JavaScript验证-document.getElementById在引导模式下不工作
我正在使用JavaScript验证-document.getElementById在引导模式下不工作,javascript,php,html,twitter-bootstrap,Javascript,Php,Html,Twitter Bootstrap,我正在使用onSubmit()函数验证表单条目 如果表单位于独立的php文件或html文件中,则表单和验证函数可以正常工作 但是,当表单嵌入到引导模式中时,JS验证函数会抛出一条错误消息[object HTMLInputElement] 我已尝试将document.getElementById('uemail')更改为document.getElementById('uemail')。值,如另一个答案中所建议, 但显然没有向函数传递任何值 如果我删除onSubmit()属性,那么这些值将正确地传
onSubmit()
函数验证表单条目
如果表单位于独立的php文件或html文件中,则表单和验证函数可以正常工作
但是,当表单嵌入到引导模式中时,JS验证函数会抛出一条错误消息<代码>[object HTMLInputElement]
我已尝试将document.getElementById('uemail')
更改为document.getElementById('uemail')。值
,如另一个答案中所建议,
但显然没有向函数传递任何值
如果我删除onSubmit()
属性,那么这些值将正确地传递给服务器上的操作脚本
这一定是常见的用法。我做错了什么
这是我的代码的一个缩写部分:
<script>
function formCheck() {
var valid = true;
//alert('in function');
var email = document.getElementById('uemail');
alert('email:' + email);
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email)) {
alert('Please provide a valid email address');
email.focus;
valid = false;
}
return valid;
}
</script>
<form id="regform" action="action.php" method="post" onSubmit="return formCheck()">
Email: <input type="text" name="uemail" id="uemail" size="50" value="" required><span id ="ast">*</span><br>
<input type="submit" name="Submit" value="Register" />
</form>
函数formCheck(){
var valid=true;
//警报(“功能中”);
var email=document.getElementById('uemail');
警报(“电子邮件:”+电子邮件);
变量过滤器=/^([a-zA-Z0-9\.\-])+\@([a-zA-Z0-9\-])+\)+([a-zA-Z0-9]{2,4})+$/;
如果(!filter.test(电子邮件)){
警报(“请提供有效的电子邮件地址”);
email.focus;
有效=错误;
}
返回有效;
}
电子邮件:*
编辑:看起来您无法执行文档。getElementById
,您可以执行以下操作:
function formCheck(formEl) {
//...
var email = formEl.getElementsByTagName("input")[0].value;
// this will get the first input-element in your form
及
错误:您正在测试的变量
email
是HTMLElement,而不是字符串:
解决方案:将电子邮件设置为HTMLInputElement的值:
var email = document.getElementById('uemail').value;
还有email.focus
没有做任何事情,请使用email.focus()代码>
演示:
函数formCheck(){
var valid=true;
//警报(“功能中”);
var email=document.getElementById('uemail').value;
警报(“电子邮件:”+电子邮件);
变量过滤器=/^([a-zA-Z0-9\.\-])+\@([a-zA-Z0-9\-])+\)+([a-zA-Z0-9]{2,4})+$/;
如果(!filter.test(电子邮件)){
警报(“请提供有效的电子邮件地址”);
email.focus;
有效=错误;
}
返回有效;
}
电邮:
*
编辑:看起来您无法执行文档。getElementById
,您可以执行以下操作:
function formCheck(formEl) {
//...
var email = formEl.getElementsByTagName("input")[0].value;
// this will get the first input-element in your form
及
错误:您正在测试的变量email
是HTMLElement,而不是字符串:
解决方案:将电子邮件设置为HTMLInputElement的值:
var email = document.getElementById('uemail').value;
还有email.focus
没有做任何事情,请使用email.focus()代码>
演示:
函数formCheck(){
var valid=true;
//警报(“功能中”);
var email=document.getElementById('uemail').value;
警报(“电子邮件:”+电子邮件);
变量过滤器=/^([a-zA-Z0-9\.\-])+\@([a-zA-Z0-9\-])+\)+([a-zA-Z0-9]{2,4})+$/;
如果(!filter.test(电子邮件)){
警报(“请提供有效的电子邮件地址”);
email.focus;
有效=错误;
}
返回有效;
}
电邮:
*
如果我尝试使用getElementById()提取元素的值。那里似乎没有值。带有.value的代码工作得很好,直到它从模式中运行为止。那是我的问题,恐怕不是。代码在模式中仍然无法工作。那么我已经尽力了,对不起。但也许我会放弃它,放弃部分正确的解决方案和我在Hanks getElementsByTagName(“输入”)[0]中付出的努力。值解决了我的问题。很抱歉延迟回复,但我现在已将其应用于完整表单,并获得成功。再次感谢-这是对我第一次在线请求帮助的良好响应。如果我尝试使用getElementById()提取元素的值,那么那里似乎没有值。带有.value的代码工作得非常好,直到它在模式中运行为止。那是我的问题,恐怕不是。代码在模式中仍然无法工作。那么我已经尽力了,对不起。但也许我会放弃它,放弃部分正确的解决方案和我在Hanks getElementsByTagName(“输入”)[0]中付出的努力。值解决了我的问题。很抱歉延迟回复,但我现在已将其应用于完整表单,并获得成功。再次感谢-这是对我第一次在线求助的巨大回应。