2009-08-27 2 views
0

в моем коде я назвал функцию javascript onsubmit формы и внутри функции, выполняющей проверку в моих полях, используя formname.fieldname.value, и она отлично работает, но внезапно это не работает. ошибка "formname не определена".проверка формы javascript внезапно прекращает работу

Заранее спасибо

+0

"вдруг" а? Вы должны опубликовать код для нас, чтобы помочь вам - javascript, код формы и т. Д. – Steven

+0

Вы получите более качественный (более конкретный и точный) совет, если вы опубликуете код, с которым вы столкнулись. В противном случае мы можем давать только догадки. – Sean

ответ

1

Некоторые возможные причины:

  • вы добавили еще один объект с тем же именем на этой странице
  • вы изменили название формы
  • имя атрибута является не дольше там на бланке формы
1

Если вы могли бы написать свой код, p, но я думаю, что знаю, что происходит. Внутри функции onsubmit он не имеет правильной области видимости переменной. Обычно я обхожу это, передавая ссылку на функцию <form>, что очень просто.

<form onsubmit="return doValidation(this);"> 

, а затем ваш JavaScript:

function doValidation(form) { 

    form.fieldOne.value = ... // etc 

}; 

Другой путь будет ссылаться на него абсолютно

<form name="myForm"> 


function doValidation() { 
    var form = document.myForm; 
    form.fieldOne.value = ... // etc 
} 
0

«formname.fieldname.value» является хак IE, который никогда не должен иметь работал в любом месте. Не используйте его. Формы не должны регистрироваться как глобальные переменные (члены окна), и с ним связано множество проблем с совместимостью, что, возможно, привело к тому, что ваш скрипт «остановился» в некоторых обстоятельствах.

Дан:

<form name="foo" method="get" action="/"> ... 
<input name="bar" type="text" value="" /> 

Правильный способ доступа входа со старой школой DOM Level методой 0 HTML является:

document.forms.foo.elements.bar 

Это работает во всех браузерах, восходящих к доисторическому Netscape 2 и имеет гораздо меньший шанс спровоцировать столкновение имен, используя массив document.forms вместо глобального «окна» (объект, в котором много и увеличиваются члены, имена которых вы случайно можете выбрать).

Однако в эти дни, вероятно проще всего использовать ID, и метод getElementById DOM Level 1 сердечник:

<form method="get" action="/"> ... 
<input name="bar" type="text" value="" id="field-bar" /> 

document.getElementById('field-bar') 

, который проще и не имеет никаких столкновений с членами объектов окна, документов или форм.

Смежные вопросы