Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как имитировать .click (https://javascript.ru/forum/jquery/58222-kak-imitirovat-click.html)

anastasia21 10.09.2015 11:11

Как имитировать .click
 
Всем привет!
Помогите пожалуйста разобраться с кодом
else {
$(document).ready(
function()
{
$('#spisok > input').click(function (){
$('#container > div').hide();
var i=$(this).data('id');
$('#d'+i).fadeIn();
});
}
);
form.submit();
}

<p id="spisok"><input data-id='2' type=submit class="btn_submit" value='Продолжить'></p>

Этот код работает если только 2 раза нажать на 'Продолжить', а надо чтобы сразу.

nesnayka 10.09.2015 13:16

Во-первых, проблема в том, что $(document).ready( ) у вас стоит внутри условия, а должна быть непосредственно в теле тега script.
Получается, что есть какое-то условие (которое вы не полностью дали), которое судя по всему выполняется по нажатию кнопки. Вот и получается, что сначала, после первого клика, объявляется функция, которая внутри $(document).ready() написана, а потом, после второго, она выполняется.
Если непонятно, что нужно исправить, то дайте хотя бы побольше кода. )

anastasia21 10.09.2015 13:35

(function( $ ){
$(function() {
$('.rf').each(function(){
var form = $(this),
btn = form.find('.btn_submit');
form.find('.rfield').addClass('empty_field');
function checkInput(){
form.find('.rfield').each(function(){
if($(this).val() != ''){
$(this).removeClass('empty_field');
} else {
$(this).addClass('empty_field');
}
});
}
function lightEmpty(){
form.find('.empty_field').css({'border-color':'#d8512d'});
setTimeout(function(){
form.find('.empty_field').removeAttr('style');
},500);
}
setInterval(function(){
checkInput();
var sizeEmpty = form.find('.empty_field').size();
if(sizeEmpty > 0){
if(btn.hasClass('disabled')){
return false
} else {
btn.addClass('disabled')
}
} else {
btn.removeClass('disabled')
}
},500);
btn.click(function(){
if($(this).hasClass('disabled')){
lightEmpty();
return false
} else {
$(document).ready(
function()
{
$('#spisok > input').click(function (){
$('#container > div').hide();
var i=$(this).data('id');
$('#d'+i).fadeIn();
});
}
);
}
});	
});
});
})( jQuery );


<p id="spisok"><input data-id='2' type=submit class="btn_submit" value='Продолжить'></p>

nesnayka 10.09.2015 18:28

То, что вы предоставили ни разу не работает. ))
Остается только догадываться, где элементы с классами rf, rfield и с ИД container, d1 находятся и как они должны взаимодействовать.
Весь JS - это хорошо, но когда нет HTML, то это становится похожим на прочтение инструкции по эксплуатации с кучей неизвестных терминов без самого устройства, которое собираемся эксплуатировать.

Например это:
$('.rf').each(function(){
var form = $(this),

Понятно, что перебирает все элементы с классом rf и потом присваивает их поочередно переменной form.
Много форм на странице?
Так может проще сделать onsumit для форм (возможно это значительно сократит код), чем отслеживать клик по кнопке в такое большой лесенке функций?

Так же непонятно зачем сделано это:
Обработчик клика по кнопке
btn = form.find('.btn_submit');
btn.click(function(){

});

А внутри него вставлен еще один обработчик клика по ней же:

$('#spisok > input').click(function (){

});

Давайте-ка весь код или ссылку на страницу.

nerv_ 10.09.2015 23:50

Сперва они имитируют клик, затем болезнь, а потом оргазм имитировать начнут :D

Чувствовать его нужно, чувствовать! Я про клик, конечно :)


Часовой пояс GMT +3, время: 04:51.