#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Я впервые много работаю с чем-либо, кроме perl и vb, поэтому, пожалуйста, потерпите меня.
Я могу сравнить два поля, которые должны совпадать, и если они этого не делают, то мне нужно полностью скрыть ссылки HTML. Как бы это было написано?
Это захватывает первый идентификатор пользователя
($("#trid").val());
($("#pxuserid").text());
var test = $("#pxuserid").text().indexOf("-");
var username = $("#pxuserid").text().substring(test 1);
(username);
Это захватывает второй идентификатор пользователя и изменяет его с верхнего регистра на нижний.
($("[name=vsvadm]").val());
var str = $("[name=vsvadm]").text("checked", true).val().toLowerCase();
(str);
Это то, что мне нужно показать / скрыть
<div class="pxcontent" id="sarea">
<div class="pxvtab" id="pxform">
<div class="pxvtablinks">
<a href="javascript:act();" rel="#page2">Directories</a>
<a href="javascript:act();" rel="#page5">Accounting</a>
<a href="javascript:act();" rel="#page6">Advanced</a>
<a href="javascript:act();" rel="#page7">Security</a>
Я пытаюсь заставить скрипт сказать «Если идентификатор пользователя 1 не равен идентификатору пользователя 2, то скройте страницы 5, 6 и 7, но покажите только страницу 2, в противном случае продолжайте»
Надеюсь, я никого не запутал, и кто-нибудь может помочь!
Комментарии:
1. Это должно быть сделано на стороне сервера, на клиенте пользователь может видеть, что происходит (каким бы запутанным это ни было), и вы, похоже, проверяете значение, хранящееся на сайте, к которому ваш пользователь может получить доступ.
2. Также, к вашему сведению, следующие ваши утверждения ничего не делают, т. Е. Они извлекают значение и отбрасывают его:
($("#trid").val());
,($("#pxuserid").text());
,(username);
,($("[name=vsvadm]").val());
,(str);
Ответ №1:
Присвоите всем <a>
тегам класс:
<a href="javascript:act();" class="nav-links" rel="#page2">Directories</a>
<a href="javascript:act();" class="nav-links" rel="#page5">Accounting</a>
<a href="javascript:act();" class="nav-links" rel="#page6">Advanced</a>
<a href="javascript:act();" class="nav-links" rel="#page7">Security</a>
А затем проверьте условие и скройте его:
if (userid1 != userid2)
$(".nav-links").hide();
Примечание: это действительно должно обрабатываться на стороне сервера, а не на стороне клиента. Опытные пользователи (и почти все сейчас) могут получить доступ к скрытым элементам с помощью инструментов разработки.
Комментарии:
1. Есть ли простая команда, которая добавит классы только на страницу 5, 6, 7?
2. @CharlesZ Я думаю, что лучше справиться с этим с помощью серверной части. Но да.
Ответ №2:
Предполагая, что str
и username
— это то, что вы хотите сравнить..
if(str !== username) $("a").hide();
Это скрывает ВСЕ ссылки, как указано в вашем вопросе, но не должно использоваться для предотвращения их просмотра пользователями. Если ваши ссылки должны быть безопасными, то аутентификация должна выполняться на стороне сервера.
Также вы можете избавиться от всех отдельно стоящих утверждений, которые вы вложили в perens. Они не служат никакой цели.
Ответ №3:
Вам нужно сравнить строки, а затем перебрать ссылки
var username1 = 'username1'
var username2 = 'username2'
// Do compare
if (username1 !== username2) {
// Loop over the links
$.each($('.pxvtablinks a'), function() {
// If it doesn't have a rel attribute equal to '#page2'...
if ($(this).attr('rel') !== '#page2') {
// hide it.
$(this).hide()
}
})
}