У нас есть такой код, который работает некоторое время. Это кнопка, которая отправляет html-форму, если только рядом текстовое поле пусто. Я взял этот фрагмент непосредственно из нашего кода; Я изменил содержимое полей, но ничего не удалил.JavaScript return false not stopping form submission
<input
type="image"
name="inputName"
id="inputId"
src="someImage"
alt="altText"
onclick="
javascript:var obj = document.all ? document.all["aTextInputFormFieldId"] :
document.getElementById("aTextInputFormFieldId");
if(obj.value.length == 0)
{
alert('It is 0!');
return false;
};"
style="someStyle" />
(Исходный код все в одной строке, но для ясности были добавлены линейные разрывы).
Кажется, отлично работает в Firefox. Но в IE это терпит неудачу так, что я не могу понять: если поле ввода (aTextInputFormFieldId) пустое, оно помещает предупреждение, но затем отправляет форму в любом случае после того, как пользователь нажимает кнопку «ОК» в уведомлении.
Когда я сделал просмотр источника на всей странице и скопировал его локально, он работает отлично; он либо представляет форму, либо ставит предупреждение, а затем отказывается представить.
Моя лучшая современная (но все же паршивая) теория заключается в том, что одна из включенных библиотек JavaScript делает что-то смешное, что объясняет, почему это не удалось на реальном сайте, но не удается, захватите различные библиотеки, которые он импортирует.) Это логично, и я проверю его, хватая библиотеки, но мне трудно представить, что эти библиотеки могут делать, чтобы испортить это (или почему). .. они просто обычные библиотеки утилиты, такие как jquery, служебные функции и т. д.
У кого-нибудь есть теория о том, что может происходить здесь?
если у вас есть несколько библиотек, попробуйте добавить их в один за другим, чтобы выяснить, какая из баловаться с вашей формой. –
'document.all' ?! Почему вы обслуживаете IE 4? – Quentin
@Scott: это моя мысль и то, что я делаю сейчас ... но мне сложно описать, почему будет библиотека, которая каким-то образом перехватывает это, позволяя предупреждению пройти, но отменяя возврат false , Но, возможно, что-то еще происходит ... (очевидно, я пропускаю * что-то * ...) – Beska