Перейти к публикации

Рекомендованные сообщения

В общем есть функция:

function fast_vote(a){


	var b=$("#vote_"+a+" input:radio[name=vote_check]:checked").val();


	ShowLoading("");


	$.get(dle_root+"engine/ajax/vote.php",{vote_id:a,vote_action:"vote",vote_mode:"fast_vote",vote_check:b,vote_skin:dle_skin},function(c){


		HideLoading("");

		$("#dle-vote_list-"+a).fadeOut(500,function(){

			$(this).html(c);

			$(this).fadeIn(500)

		})

	});

	return false

}
не могу в нее внедрить следующую часть:
	var frm = document.vote;

	var vote_check = '';


	for (var i=0; i < frm.elements.length; i++) {

		var elmnt = frm.elements[i];

		if (elmnt.type=='radio') {

			if(elmnt.checked == true){ vote_check = elmnt.value; break;}

		}

	}

	if (event == 'vote' && vote_check == '') { return; }
вместо:
var b=$("#vote_"+a+" input:radio[name=vote_check]:checked").val();

Кто знает, как ее заменить, помогите пожалуйста. С doVote(event); получилось, а как здесь поступить не знаю. Благодаря этому обычное голосование на сатйе, если ни один пункт не выбран, то при нажатии голосовать действий не проиходит.

Ссылка на сообщение
Поделиться на других сайтах

Если честно я не понял что вы именно хотите сделать и главное зачем? ведь код

        var frm = document.vote; 
var vote_check = '';

for (var i=0; i < frm.elements.length; i++) {
var elmnt = frm.elements[i];
if (elmnt.type=='radio') {
if(elmnt.checked == true){ vote_check = elmnt.value; break;}
}
}
[/code] делает абсолютно тоже самое что и одна строчка
[code]var b=$("#vote_"+a+" input:radio[name=vote_check]:checked").val();
Просто первый вариант это нативный JS, а второй вариант это с использованием JS фреймворка Jquery А вообще неработает потому что вместо
var frm = document.vote; 

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

Ссылка на сообщение
Поделиться на других сайтах

Еще где-то на версии 8.5 нашел хак, не дающий проголосовать, если ни один из вариантов не выбран, и насколько помню, в той версии jQuery небыло, и он у меня перекочевал в новые версии.

Подскажите, что нужно сделать со строчкой

var b=$("#vote_"+a+" input:radio[name=vote_check]:checked").val();
чтобы если вариантов выбраных нет, то при нажатии на кнопку, ничего не происходило. В функции doVote() работает
						function doVote( event ) {


							var frm = document.vote;

							var vote_check = '';


							for (var i=0; i < frm.elements.length; i++) {

								var elmnt = frm.elements[i];

								if (elmnt.type=='radio') {

									if(elmnt.checked == true){ vote_check = elmnt.value; break;}

								}

							}

							if (event == 'vote' && vote_check == '') { return; }


							ShowLoading('');


							$.get(dle_root + "engine/ajax/vote.php", { vote_id: "{$rid}", vote_action: event, vote_check: vote_check, vote_skin: dle_skin }, function(data){


								HideLoading('');


								$("#vote-layer").fadeOut(500, function() {

									$(this).html(data);

									$(this).fadeIn(500);

								});


							});

						}
Я пытался делать вот как, но реакция происходит
var frm = document.a; 

Изменено пользователем Critical Error
Ссылка на сообщение
Поделиться на других сайтах

Еще где-то на версии 8.5 нашел хак, не дающий проголосовать, если ни один из вариантов не выбран, и насколько помню, в той версии jQuery небыло, и он у меня перекочевал в новые версии.

Непонятно, там же поле типа type="radio" там не может быть в не выбрано ниодного варианта, всегда в браузере один вариант да будет выбран, снять все варианты нельзя в самом браузере, поэтому данный хак ничего по сути не делает.

А вообще вся проверка в этом хаке это строчка

if (event == 'vote' && vote_check == '') { return; } 
соответственно нужно не ставить весь этот код, а просто после строчки
var b=$("#vote_"+a+" input:radio[name=vote_check]:checked").val();
ниже добавить
if (b == '') { return; }

вот и весь хак, никакого нативного кода ставить не нужно

Ссылка на сообщение
Поделиться на других сайтах

Не, не помогло, все равно голосует :(

Ну да черт с ним.

Оставлю как есть, будет такая возможность только в doVote(). Там срабатывает

Ссылка на сообщение
Поделиться на других сайтах

И все же, celsoft, как изменить код, чтобы если ни один пункт не выбран, то форма не отправлялась? Подскажите пожалуйста. Мучаюсь теперь сижу :)

Ссылка на сообщение
Поделиться на других сайтах

И все же, celsoft, как изменить код, чтобы если ни один пункт не выбран, то форма не отправлялась? Подскажите пожалуйста. Мучаюсь теперь сижу

я вам написал выше http://forum.dle-news.ru/index.php?showtopic=55523&view=findpost&p=272533 если не работает то что вы не так уже делаете, но я вам привел полный аналог вашего кода.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...