Javascript не может скрыть некоторые DIVs - PullRequest
0 голосов
/ 30 августа 2010

Я получил "форму нового пользователя". Существует три разных уровня очистки:

  • клиент
  • clientContact
  • clientRepresentative

И есть несколько полей, таких как newMail, newPostalCode и т. Д.

Вот код, который я использую для отображения элемента:

function doShow(obj) {
                    document.getElementById(obj).style.display = '';
                }

И код, который я использую, чтобы скрыть элемент:

function doHide(obj) {
                    document.getElementById(obj).style.display = 'none';
                }

Работает для небольших блоков данных. При создании пользователя указывается уровень очистки, если это clientRepresentive, отображается соответствующее поле. Например, у клиента есть только один адрес электронной почты, у clientRepresentive есть два адреса электронной почты, а у clientContact - три.

Но это не работает! . Если я выберу клиента, то будет одно электронное письмо, как и планировалось, но если я выберу clientContact и затем переключусь на clientRepresentive, избыточное поле (e-mail3) будет не скрыто .

Я считаю, что это проблема JavaScript, пожалуйста, помогите мне, так как мой уровень гнева достигает предела.

редактирование: Я забыл вставить функцию, используемую, чтобы показать / скрыть элементы.

 if (clearenceLevel != "Chose...") {
                        if (clearenceLevel == "client") {

                            doShow("newMail");
                            doHide("newMail2");
                            doHide("newMail3");
                            doShow("newNip");
                            doShow("newRegon");
                            doShow("newStreet");
                            doHide("newHeadquarters");
                            doShow("newAddress");
                            doShow("newPostalCode");
                            doShow("kptekst");
                            doShow("newCity");
                            doShow("newAccount");
                            doShow("newState");
                            doHide("newStatus");
                            doHide("newPassword");
                        } else if (clearenceLevel == "clientRepresentative") {

                            doShow("newMail");
                            doShow("newMail2");
                            doHide("newStatus");
                            doHide("newMail3");
                            doHide("newNip");
                            doHide("newRegon");
                            doHide("newStreet");
                            doHide("newHeadquarters");
                            doHide("newAddress");
                            doHide("newPostalCode");
                            doHide("newCity");
                            doHide("newAccount");
                            doHide("newState");
                            doHide("kptekst");
                            doShow("newPassword");

                        } else if (clearenceLevel == "clientContact") {

                            doShow("newMail");
                            doShow("newMail2");
                            doShow("newMail3");
                            doHide("newNip");
                            doHide("newRegon");
                            doHide("newStatus");
                            doHide("newStreet");
                            doHide("newHeadquarters");
                            doHide("newAddress");
                            doHide("newPostalCode");
                            doHide("newCity");
                            doHide("newAccount");
                            doHide("newState");
                            doHide("kptekst");
                            doHide("newPassword");
                        }
                    }

Ответы [ 3 ]

1 голос
/ 30 августа 2010

Не прямой ответ на ваш вопрос, но предложение о том, как вы могли бы улучшить способ, которым вы делаете это.Вместо того, чтобы перечислять каждое свойство для отображения и скрытия для каждого уровня пользователя, сделайте что-то вроде:

<input type="text" name="email" class="client representative contact">
<input type="text" name="ssn" class="representative">

Затем, когда уровень пользователя изменится, скрыть everything и затем отобразить все, что имеетправильный уровень.Так что в моем примере «электронная почта» доступна «клиенту», «представителю» и «контакту».Поэтому, если они переключатся на любой из этих уровней, это поле будет отображаться, однако «ssn» доступно только «представителю», поэтому оно не будет отображаться ни для кого другого.

Преимуществом этого будет возможность легко добавить совершенно новый элемент без необходимости изменять Javascript, только HTML.

if (clearenceLevel != "Chose...") {
                    hideAll();
                    if (clearenceLevel == "client") {
                        doShow("client");
                    } else if (clearenceLevel == "clientRepresentative") {
                        doShow("representative");
                    } else if (clearenceLevel == "clientContact") {
                        doShow("contact");
                    }
 }
1 голос
/ 30 августа 2010

Возможно, вы допустили ошибку в коде.

иначе if (clearenceLevel == "clientRepresentive") {
doShow ( "NewMail");
doShow ( "newMail2");
doHide ( "NEWSTATUS");
doShow ( "newMail3"); // это не должно быть doHide ()?
// etc

Из вашего сообщения я понял, что вы хотите скрыть электронную почту3 при переключении на clientRepresentive, но в приведенном выше коде вместо doHide () выполняется doShow ().

0 голосов
/ 30 августа 2010

Спасибо за ваши ответы, Я публикую форму, использованную для отправки данных

  echo '<div id="newMail"><br><font color="red">*</font>email: <input type="text" name="newMail" value="' . $_POST['newMail'] . '" /> </div>';
    echo '<div id="newMail2"><br>email 2: <input type="text" name="newMail2"  value="' . $_POST['newMail2'] . '" /> </div>';
    echo '<div id="newMail3"><br>email 3: <input type="text" name="newMail3"   value="' . $_POST['newMail3'] . '" /> </div>';
    echo '<div id="newNip"><br>nip: <input type="text" maxlength="15" name="newNip" value="' . $_GET['nip'] . '"/> </div>';
    echo '<div id="newRegon"><br>regon: <input type="text" name="newRegon"  value="' . $_POST['newRegon'] . '" /> </div>';
    echo '<div id="newStreet"><br>Street: <input type="text" name="newStreet" value="' . $_POST['newStreet'] . '" /> </div>';
    echo '<div id="newHeadquarters"><br>Headquarters: <select name="newHeadquarters"> ';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...