2012-06-23 3 views
1

У меня есть флажок, который я не хочу, чтобы у пользователя был прямой доступ. Я хочу, чтобы они приняли некоторые условия. Для этого я хочу, чтобы у них была возможность щелкнуть по отключенному флажку, который открывает это мини-всплывающее окно (не проверяя поле), которое содержит термины, чтобы читатель мог их прочитать и принять. Когда они их примут, всплывающее окно закроется, и флажок будет проверен. Проблема, которая у меня есть, я не могу понять, как запустить функцию onclick отключенного флажка.функция запуска onclick отключена checkbox

+0

Вы можете попробовать JQuery .something как $ ('флажок: отключено'). Нажмите (функция() {}); – vijay

+0

Я пробовал, и это не работает, спасибо! – Osman

+0

Возможный дубликат [Как я могу выполнить функцию при щелчке по отключенному флажку?] (Http://stackoverflow.com/questions/6781467/how-can-i-execute-a-function-when-a-disabled- checkbox-is-clicked) – McGarnagle

ответ

3

Обработка щелчка по отключенному элементу действительно сложна ... но я не думаю, что это желательный пользовательский интерфейс в любом случае. Если флажок отключен, некоторые пользователи увидят это и будут не склонны даже пытаться щелкнуть по нему. Вместо этого рассмотрите перехват события click и его использование в ваших собственных целях, используя preventDefault.

<input type='checkbox' id="cb" name="cb" /> 

$(document).ready(function() { 
    $("#cb").click(function(e) { 
     // cancel click event so that checkbox remains unchecked 
     e.preventDefault(); 

     // display popup here, then manually check the checkbox if needed 
    } 
}); 
+0

Я подумал об этом, и я попрошу его поблагодарить. К комментарию о сдерживании пользователей эти условия необходимы для отправки формы, поэтому, если они попытаются отправить ее, не нажимая на условия принятия, они будут предложены в любом случае для отправки. – Osman

+0

Я также пробовал это. Он не работает. – vijay

+0

@vjshah Я не уверен, что вы имеете в виду ... Я прототипировал его, и он работает для меня, как и следовало ожидать ... там есть решение в другом месте на SO, хотя, если хотите, посмотрите на тему, связанную с выше , – McGarnagle

0

Флажок отключен, возможно, неправильно обрабатывает события щелчка и будет отображаться как «отключенный».

Но, вы можете попробовать это:

  • добавить атрибут в поле, чтобы сохранить, если отображалось всплывающее окно (например, дата-всплывающее окно = «0»)
  • обрабатывать событие OnClick на флажке
  • Если всплывающее окно было отображено (data-popup = "1"), просто верните true, чтобы разрешить его использовать.
  • Если всплывающее окно не отображается (data-popup = "0"), поведение, установить data-popup = "1" и отобразить всплывающее окно с условиями и положениями

Другим усовершенствованием, в зависимости от дизайна вашего всплывающего окна, может быть добавление нового флажка в этом всплывающем окне, и когда пользователь будет читать условия, он может принять условия и положения непосредственно из всплывающего окна. Если вы это сделаете, вам нужно обработать событие click во флажке во всплывающем окне и также автоматически установить флажок на своей странице.

0

@dbaseman

Вот мой код. Посмотрите. Вот, я получаю предупреждение на div, но не на флажке.

<html> 
<head> 
<script type="text/javascript" src="jQuery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$("#checkbox, #hello").click(function(){ 

     alert("hello"); 
    }); 
}); 
</script> 
</head> 

<body> 
<div id="checkbox"> 
    <p> hello</p> 
<input type="checkbox" id="hello" disabled="disabled" /> 
</div> 
</body> 
</html> 
+0

вам нужно поймать defult action и заблокировать его, попробуйте '$ (« # checkbox, #hello »). Click (function (e) { e.preventDefault(); предупреждение («привет»); }); 'как @dbaseman сказал – Osman

+0

да, я получил его. Спасибо – vijay

1
$('#chk').click(function() { 
      if (confirm('Accept')) { 
       $(this).attr('checked', 'checked'); 
      } 
      else { 
       $(this).attr('checked', false); } 
     });