Critical Error 155 Опубликовано: 15 апреля 2011 Рассказать Опубликовано: 15 апреля 2011 В общем есть функция: 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); получилось, а как здесь поступить не знаю. Благодаря этому обычное голосование на сатйе, если ни один пункт не выбран, то при нажатии голосовать действий не проиходит. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 15 апреля 2011 Рассказать Опубликовано: 15 апреля 2011 Если честно я не понял что вы именно хотите сделать и главное зачем? ведь код 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 Цитата Ссылка на сообщение Поделиться на других сайтах
Critical Error 155 Опубликовано: 15 апреля 2011 Рассказать Опубликовано: 15 апреля 2011 (изменено) Автор Еще где-то на версии 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; Изменено 15 апреля 2011 пользователем Critical Error Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 16 апреля 2011 Рассказать Опубликовано: 16 апреля 2011 Еще где-то на версии 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; } вот и весь хак, никакого нативного кода ставить не нужно Цитата Ссылка на сообщение Поделиться на других сайтах
Critical Error 155 Опубликовано: 16 апреля 2011 Рассказать Опубликовано: 16 апреля 2011 Автор Не, не помогло, все равно голосует Ну да черт с ним. Оставлю как есть, будет такая возможность только в doVote(). Там срабатывает Цитата Ссылка на сообщение Поделиться на других сайтах
Critical Error 155 Опубликовано: 16 апреля 2011 Рассказать Опубликовано: 16 апреля 2011 Автор И все же, celsoft, как изменить код, чтобы если ни один пункт не выбран, то форма не отправлялась? Подскажите пожалуйста. Мучаюсь теперь сижу Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 17 апреля 2011 Рассказать Опубликовано: 17 апреля 2011 И все же, celsoft, как изменить код, чтобы если ни один пункт не выбран, то форма не отправлялась? Подскажите пожалуйста. Мучаюсь теперь сижу я вам написал выше http://forum.dle-news.ru/index.php?showtopic=55523&view=findpost&p=272533 если не работает то что вы не так уже делаете, но я вам привел полный аналог вашего кода. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.