…;不是javascript{custom code}中的函数
拜托,谁能告诉我,我的语法有什么不对吗 问题从语句…;不是javascript{custom code}中的函数,javascript,oop,syntax,Javascript,Oop,Syntax,拜托,谁能告诉我,我的语法有什么不对吗 问题从语句this.form.onsubmit开始,在那里我得到this.initData不是函数 谢谢 var Contact_Form = function(element){ this.form = element; this.errors = new Array(); this.invalid = new Array(); this.inSent = false; this.name = new String(); this.email = new
this.form.onsubmit
开始,在那里我得到this.initData不是函数
谢谢
var Contact_Form = function(element){
this.form = element;
this.errors = new Array();
this.invalid = new Array();
this.inSent = false;
this.name = new String();
this.email = new String();
this.message = new String();
this.initData = function()
{
this.name = this.getElementValue('contact-name');
this.email = this.getElementValue('contact-email');
this.message = this.getElementValue('contact-message');
}
this.form.onsubmit = function(event)
{
event.preventDefault();
this.initData();
if(this.verifyData())
this.send();
}
this.verifyData = function()
{
if(!this.isNameLength())
this.setError('name', 'Zadejte, prosím, jméno dlouhé maximálně 30 znaků.');
if(this.isProperEmail())
{
if(!this.isEmailLength())
this.setError('email', 'Váš e-mail smí obsahovat maximálně 50 znaků.');
}
else
this.setError('email', 'Zadejte, prosím, email v korektním formátu.');
if(!this.isMessageLength())
this.setError('name', 'Zadejte, prosím, zprávu v rozsahu 1-999 znaků.');
this.doInvalidFields();
if(0 == this.errors.length)
return true;
return false;
}
this.doInvalidFields = function()
{
if(this.invalid.length > 0)
{
for(var invalid in this.invalid)
this.getElement(invalid).setAttribute('aria-invalid', true);
}
}
this.setError = function(field, message)
{
this.errors.push(message);
this.invalid.push(field);
}
this.getElementValue = function(element) {
return this.getElement(element).value;
}
this.getElement = function(element) {
return document.getElementById(element);
}
this.getElementName = function() {
return this.getElement('contact-name');
}
this.getElementEmail = function() {
return this.getElement('contact-email');
}
this.getElementMessage = function() {
return this.getElement('contact-message');
}
this.isNameLength = function(){
return this.isLength(this.name, 1, 30);
}
this.isEmailLength = function(){
return this.isLength(this.email, 1, 50);
}
this.isMessageLength = function(){
return this.isLength(this.email, 1, 999);
}
this.isProperEmail = function() {
return this.email.match(/^(?:\w){1,100}@{1}(?:\w){1,100}(?:.){1}(?:\w){1,10}$/ig);
}
this.isLength = function isLength(string, _min, _max) {
if(string.length >= _min && string.length <= _max)
return true;
return false;
}
}
window.onload = function()
{
new Contact_Form(document.forms[0]);
}
var Contact\u Form=函数(元素){
this.form=元素;
this.errors=新数组();
this.invalid=新数组();
this.inSent=false;
this.name=新字符串();
this.email=新字符串();
this.message=新字符串();
this.initData=函数()
{
this.name=this.getElementValue('contact-name');
this.email=this.getElementValue('contact-email');
this.message=this.getElementValue('contact-message');
}
this.form.onsubmit=函数(事件)
{
event.preventDefault();
这是initData();
if(this.verifyData())
这个。send();
}
this.verifyData=函数()
{
如果(!this.isNameLength())
这个.setError('name','Zadejte,prosím,jméno dlouhémaximálně30 znaků');
if(this.isProperteMail())
{
如果(!this.isEmailLength())
这个.setError('email','Váše-mail smíobsahovat maximálně50 znaků');
}
其他的
setError('email','Zadejte,prosím,email v korektním formátu');
如果(!this.isMessageLength())
此.setError('name','Zadejte,prosím,zpráv1-999 znaků');
这个.doInvalidFields();
if(0==this.errors.length)
返回true;
返回false;
}
this.doInvalidFields=函数()
{
如果(this.invalid.length>0)
{
for(变量在此中无效。无效)
this.getElement(无效).setAttribute('aria-invalid',true);
}
}
this.setError=函数(字段、消息)
{
此.errors.push(消息);
此.invalid.push(字段);
}
this.getElementValue=函数(元素){
返回此.getElement(element).value;
}
this.getElement=函数(元素){
返回单据.getElementById(元素);
}
this.getElementName=函数(){
返回此.getElement('contact-name');
}
this.getElementEmail=函数(){
返回此.getElement('contact-email');
}
this.getElementMessage=函数(){
返回此.getElement('contact-message');
}
this.isNameLength=函数(){
返回this.isLength(this.name,1,30);
}
this.isEmailLength=函数(){
返回此.isLength(this.email,1,50);
}
this.isMessageLength=函数(){
返回此.isLength(this.email,1999);
}
this.isProperteMail=函数(){
返回此.email.match(/^(?:\w){1100}@{1}(?:\w){1100}(?:){1}(?:\w){1,10}$/ig);
}
this.isLength=函数isLength(字符串,最小值,最大值){
如果(string.length>=\u min&&string.length则问题在于此
不是继承的,并且在每个函数中具有不同的值
然后,使用
var Contact_Form = function(element){
/* ... */
var that = this;
/* Here this===that */
this.form.onsubmit = function(event)
{
/* Here this===that.form */
event.preventDefault();
that.initData();
if(that.verifyData())
this.send();
}
/* ... */
}
this
指的是onsubmit
处理程序中的表单。您可以将this
分配给局部变量,或使用以下命令将处理程序绑定到正确的this
:
或与
这两个示例都强制函数的this
上下文成为Contact\u Form
的实例,无论何时调用处理程序,此可能不使用var self=this
引用Contact\u Form.Cachethis
,然后使用self
。在您的情况下此可能是表单元素,而不是函数构造函数。这指的是this.form
this.form.onsubmit = function(event) {
event.preventDefault();
this.initData();
if(this.verifyData())
this.send();
}.bind(this)
this.form.onsubmit = $.proxy(function(event) {
event.preventDefault();
this.initData();
if(this.verifyData())
this.send();
}, this);