2013-02-09 2 views
0

ниже код представляет собой динамический способ отображения каждого варианта в качестве кнопок флажок для каждого вопроса:как остановить время отклика и подсчета кликов мыши

 function ExpandOptionType($option) { 
       $options = explode('-', $option); 
       if(count($options) > 1) { 
        $start = array_shift($options); 
        $end = array_shift($options); 
        do { 
         $options[] = $start; 
        }while(++$start <= $end); 
       } 
       else{ 
        $options = explode(' or ', $option); 
       } 
       echo '<p>'; 
       foreach($options as $indivOption) { 
        echo '<div id="ck-button"><label class="fixedLabelCheckbox"><input type="checkbox" name="options[]" id="option-' . $indivOption . '" value="' . $indivOption . '" /><span>' . $indivOption . '</span></label></div>'; 
       } 
        echo '</p>'; 


      } 


      foreach ($arrQuestionId as $key=>$question) { 

      ?> 

      <p><?php echo ExpandOptionType(htmlspecialchars($arrOptionType[$key])); ?></p> 

    <p><input type='text' class='questionIds' name='questionids' value='<?php echo htmlspecialchars($arrQuestionId[$key]); ?>' /></p> 

    <p><input type='text' class='responseTime' name='responsetime' value='00:00:00' /></p> 

    <p><input type='text' class='mouseClick' name='mouseclick' value='0' /></p> 

} 

Теперь ниже I 2 текстовых входов, которые также в цикле Еогеасп , один для времени отклика и другой для подсчета мыши:

<p><input type='text' class='responseTime' name='responsetime' value='00:00:00' /></p> 

<p><input type='text' class='mouseClick' name='mouseclick' value='0' /></p> 

Теперь это мои вопросы:

  1. Ввод текста времени ответа содержит таймер подсчета. Я хочу, чтобы, если в вопросе нажатия первой кнопки установлен вопрос, таймер ответа на вопрос должен остановиться. Это значит, что мы знаем, сколько времени потребовалось, чтобы пользователь ответил на конкретный вопрос.

  2. Текст с текстом мыши начинается с 0 и то, что я хочу, чтобы этот ввод текста выполнялся для каждой кнопки, который установлен на вопрос, в результате ввода текста щелчка мыши вопрос подсчитывает количество кликов, чтобы мы знали, сколько кликов по параметрам вопроса, которые пользователь скомпилировал.

Как можно достичь вышеуказанного?

Ниже jsfiddle показывающий пример кода, как это выглядит на один вопрос:

http://jsfiddle.net/zAFND/630/

UPDATE:

Исходный код показывает несколько примеров вопросы:

QUESTION 1: 

<p> 
<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-A" value="A" /> 
<span>A</span> 
</label> 
</div> 

<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-B" value="B" /> 
<span>B</span> 
</label> 
</div> 

<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-C" value="C" /> 
<span>C</span> 
</label> 
</div> 

<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-D" value="D" /> 
<span>D</span> 
</label> 
</div> 

<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-E" value="E" /> 
<span>E</span> 
</label> 
</div> 

<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-F" value="F" /> 
<span>F</span> 
</label> 
</div> 

</p> 

<p><input type='text' class='questionIds' name='questionids' value='73' /></p> 


<p><input type='text' class='responseTime' name='responsetime' value='00:00:00' /></p> 

<p><input type='text' class='mouseClick' name='mouseclick' value='0' /></p> 



QUESTION 2: 

<p> 
<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-A" value="A" /> 
<span>A</span> 
</label> 
</div> 

<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-B" value="B" /> 
<span>B</span> 
</label> 
</div> 

<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-C" value="C" /> 
<span>C</span> 
</label> 
</div> 

<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-D" value="D" /> 
<span>D</span> 
</label> 
</div> 

<div id="ck-button"> 
<label class="fixedLabelCheckbox"> 
<input type="checkbox" name="options[]" id="option-E" value="E" /> 
<span>E</span> 
</label> 
</div> 

</p> 

<p><input type='text' class='questionIds' name='questionids' value='74' /></p> 


<p><input type='text' class='responseTime' name='responsetime' value='00:00:00' /></p> 

<p><input type='text' class='mouseClick' name='mouseclick' value='0' /></p> 
+0

таймер для пользователя также? если не кеш $.now() при щелчке по галочке, затем на следующем $ .now() - кэшированном и помещаем это значение в скрытый ввод рядом с вопросом, на который был дан ответ; код будет проще: – mikakun

+0

@mikakun Текстовые входы будут заменены на скрытые входы, я просто разместил их как текстовые входы, чтобы я мог видеть значения, чтобы знать, что происходит. – user2056342

+0

поэтому используйте $ .now() на флажке click & form submit (для последнего); сделайте глобальный массив для ваших кликов одним индексом для каждого вопроса, который вы увеличиваете при щелчке – mikakun

ответ

1

As вы создали ссылку на setinterval, которая хороша. Теперь вы можете удалить установленный интервал при первом флажке кликов и добавить флажок «Событие клика» для всех, чтобы увеличить счетчик.

Это будет

$(document).ready(function(){ 
var checkBox=$('#ck-button').find('input'); 
var responsetimer=//your interval function 
checkbox.filter(':first').bind('click',function(e){ 
clearInterval(responsetimer); 
}); 
checkbox.bind('click',function(e){ 
$('.mouseClick').val(parseInt($('.mouseClick').val())+1); 
}); 
}); 

Ну я не уверен, вопрос, который вы хотите, чтобы таймер быть остановлен в первом нажатием кнопки или первой кнопки времени щелкнули. Если это первый раз, не используйте первую привязку. сохраняйте четкий интервал во втором привязанности.

checkbox.bind('click',function(e){ 
clearInterval(responsetimer); 
$('.mouseClick').val(parseInt($('.mouseClick').val())+1); 
}); 

JS скрипка: http://jsfiddle.net/zAFND/631/ для второго варианта http://jsfiddle.net/zAFND/638/

UPDATE , если вы хотите, чтобы это для несколько вопроса завернуть каждый вопрос с DIV говорит <div class="queWrap"></div>

Сделать refrence массива для ваших так что это может быть ясным.

Петля для каждой очереди и запускать таймер и назначать события на флажке.

Проверить пример множественного вопроса: http://jsfiddle.net/zAFND/640/

+0

Привет, только проблема заключается в том, что таймер не останавливается после первого нажатия на кнопку флажка – user2056342

+0

, тогда второй вариант будет работать для вас. –

+0

Есть ли у вас скрипка соответствовать второму варианту? В первый раз на каждый вопрос нажимается кнопка, поэтому вопрос 1, я нажимаю на кнопку флажка, таймер для вопроса 1 останавливается, для вопроса 2, нажмите кнопку флажка в вопросе 2 и таймер вопроса 2 остановится и т. Д. Вы изменили html btw? – user2056342

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