I Я показываю и отключаю поля на основе ролей пользователей. Я определяю роль пользователя через базовую радиокнопку из двух вариантов: admin
и user
. Администратор имеет возможность отключать все поля текстовых полей и нажатия кнопок. Проблема: когда администратор отключает поля, они также блокируются из возможности ввода текстового поля или перетаскивания div. Как было бы возможно, чтобы администратор отключил поля только для пользователя?Отключение полей ввода/разделов на основе значения переключателя
Если я нажму на переключатель admin
и затем нажмите кнопку, чтобы отключить поля, администратор все равно может ввести текстовое поле и перетащить div, но после переключения на переключатель user
Я хочу отключить все поля. После того, как администратор включит поля, тогда переключение на радиокнопку user
также можно ввести в текстовое поле и перетащить div.
JQuery:
/** Determine user role**/
$('input[type="radio"]').click(function(){
if($(this).attr("value")=="admin"){
$("#adminControls").show();
}
if($(this).attr("value")=="user"){
$("#adminControls").hide();
}
});
/** Disable fields **/
var clickCount = 0;
$('#adminControl1').click(function (e) {
clickCount ++;
console.log(clickCount);
if (clickCount % 2 == 1){
$("#appendText").prop("disabled", true);
$("#divText").prop("disabled", true);
$('.draggable').draggable("disable");
$("#adminControl1").val("Enable All");
} else {
$("#appendText").prop("disabled", false);
$("#divText").prop("disabled", false);
$('.draggable').draggable("enable");
$("#adminControl1").val("Disable All");
}
});
HTML:
<h3>User Role:</h3>
<div id="roles">
<label><input type="radio" name="userRole" value="admin"> Admin</label>
<label><input type="radio" name="userRole" value="user" checked="checked"> User</label>
</div>
<br/>
<br/>
<div id="adminControls">
<h3>Admin Controls</h3>
<input type="button" id="adminControl1" value="Disable All" />
</div>
<br/>
<textarea rows="4" cols="50" id="divText" placeholder="Enter Text Here!"></textarea>
<input type="button" id="appendText" value="Add Div with Text" /><br/>
<div>
<div class="middle-side empty">
<h2 class="placeholder-title hidden">Place Inside Here</h2>
</div>
</div>
* Редактировать *
var clickCount = 0;
$('input[type="radio"]').click(function(){
clickCount ++;
if($(this).attr("value")=="admin"){
$("#adminControls").show();
$('#adminControl1').click(function (e) {
if (clickCount % 2 == 1){
$("#appendText").prop("disabled", true);
$("#divText").prop("disabled", true);
$('.draggable').draggable("disable");
$("#adminControl1").val("Enable All");
}
});
}
if($(this).attr("value")=="user"){
$("#adminControls").hide();
$("#appendText").prop("disabled", false);
$("#divText").prop("disabled", false);
$('.draggable').draggable("enable");
$("#adminControl1").val("Disable All");
}
});
Просто поместите код в радио кнопку обработчик щелчка, который делает то, что вы хотите для различных ролей. В чем проблема? – Barmar
Вы также можете установить переменную в этой функции, которая говорит, находитесь ли вы в режиме пользователя или администратора. Затем обработчик нажатия кнопки может делать все, что подходит для текущей роли. – Barmar
@Barmar Я стараюсь, но не уверен, понимаю ли я концепцию. Не могу заставить его работать. –