2013-10-25 4 views
0

, поэтому я скрываю предметы, пока кто-то не ставит секретное слово в форме. Он действительно работает, но затем перезагружает страницу. Что мне не хватает? Вы можете увидеть его здесь: xxx по проектам, а пароль - «-». Javascript почти работает, но затем перезагружает страницу?

Это код, я использую:

<script language="javascript"> 
function projectsvisible() 
{ 
document.getElementById("myprojects").style.display = "block"; 
} 

function projectshide() 
{ 
document.getElementById("myprojects").style.display = "none"; 
} 

function projectsshow() 
{ 
    if(document.getElementById("password").value=="danielle") 
     { 
     projectsvisible(); 
     } 
    else { projectshide(); } 

} 
</script> 
+1

Как вы вызывающему это? Кроме того, если скрипт находится на одной странице, этот пароль не так секрет :) – tymeJV

+0

hi @tymeJV, спасибо за ответ. Я, вероятно, буду менять пароль, но он не должен быть слишком безопасным, я просто хочу скрыть свои проекты от широкой публики, из-за прошлых работодателей и т. Д. Я просто хочу, чтобы люди, которых я отправляю, чтобы они могли видеть это , Я призываю его подать, если это то, что вы имеете в виду? Есть ли лучший способ сделать это? – dshesh

+0

Я, вероятно, буду использовать PHP, поэтому его не на странице, но мне нужно быстро это сделать сегодня, поэтому я просто ищу быстрое решение. – dshesh

ответ

0

Во-первых, изменить <form id="projectform" method="POST" action="#" class="form-horizontal" onsubmit="return projectsshow(); return false">

в

<form id="projectform" method="POST" action="#" class="form-horizontal" onsubmit="return projectsshow();">

Затем измените projectsshow() функцию:

function projectsshow() 
{ 
    if(document.getElementById("password").value=="danielle") 
     { 
     projectsvisible(); 
     } 
    else { projectshide(); } 
    return false; 
} 
+0

Спасибо, много! Это именно то, что мне нужно! Если у вас есть время, вы не возражаете сказать мне, что мы там делали? Почему возвращает false false в функции showshow? Опять же, спасибо! – dshesh

+0

@DanielleSchechter атрибут onsubmit возвратил результат 'projectsshow()' function, который не был определен (нет внутренней функции возврата), второй 'return false;' никогда не вызывался. Поскольку 'projectsshow()' возвращает 'false',' onsubmit' также возвращает его (что говорит браузеру не отправлять форму - без перезагрузки). Надеюсь, это ясно;) – wachme

+0

Спасибо! @wachme – dshesh

1

Вы используете форму с кнопкой отправки. Это создает и запускает синхронную перезагрузку страницы Http Request. Вы не должны использовать форму. Просто используйте обычную кнопку с обработчиком щелчка и оберните их в div.

+0

Это правда. Я об этом не думал. Я делаю вещи слишком сложными. Благодаря! – dshesh

1

Это автоматическое обновление из-за кнопки типа submit. Это приведет к обратной передаче страницы и обновлению. Там в несколько workarouds:

  1. Добавить return false; в свой инлайн обработчик или функции
  2. использования e.preventDefault где e является event передаваемым в родительской функции
  3. Изменить тип кнопки из submit в button
0

Ваша кнопка - это перезагрузка страницы. Вы можете либо использовать jQuery's event.preventDefault() на кнопке, либо стилизовать div, чтобы он выглядел как кнопка, и выполнить действие onlick на кнопке.

0

вы обработчик onsubmit не возвращает false. projectsshow() не возвращает false. Поэтому ваша форма не препятствует отправке, и поэтому происходит обновление страницы.

<form id="projectform" method="POST" action="#" class="form-horizontal" 
    onsubmit="return projectsshow(); return false"> 

Исправьте projectsshow() метод вернуться ложным или изменить onsubmit к onsubmit="projectsshow(); return false"

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