Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Имитация нажатия кнопки (https://javascript.ru/forum/jquery/23981-imitaciya-nazhatiya-knopki.html)

ehan 13.12.2011 22:59

Имитация нажатия кнопки
 
Вечер добрый! Подскажите, имеется формочка такого вида:

<div class="item ">
   <div class="item-bg">			
      <div class="extravote-container">
         <ul class="extravote-stars">
            <li id="2266" class="current-rating"></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,1,225,54,'x',1);" class="one">1</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,2,225,54,'x',1);" class="two">2</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,3,225,54,'x',1);" class="three">3</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,4,225,54,'x',1);" class="four">4</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,5,225,54,'x',1);" class="five">5</a></li>
         </ul>
       </div>
   </div>
<span id="extravote_2267_x" class="extravote-count"><small>( 54 Votes )</small></span>

<form method="post" action=""><span class="content_rating">
<span class="content_vote">
	Худший<input type="radio" alt="vote 1 star" name="user_rating" value="1" />
	<input type="radio" alt="vote 2 star" name="user_rating" value="2" />
	<input type="radio" alt="vote 3 star" name="user_rating" value="3" />
	<input type="radio" alt="vote 4 star" name="user_rating" value="4" />
	<input type="radio" alt="vote 5 star" name="user_rating" value="5" checked="checked" />Лучший&nbsp;
	<input class="button" type="submit" name="submit_vote" value="Рейтинг" />
	<input type="hidden" name="task" value="vote" />
	<input type="hidden" name="option" value="com_content" />
	<input type="hidden" name="cid" value="2266" />
	<input type="hidden" name="url" value="..." />
</span>
</form>
</div>


Таких узлов множество, отличаются только id, необходимо имитировать клик или по ссылке
<li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,5,225,54,'x',1);" class="five">5</a></li>
или по кнопке submit с нужным значением
<input type="hidden" name="cid" value="2266" />

Никак не могу отобрать нужный элемент со страницы с помошью jquery и прицепить на него событие click(). Кто поможет, написать роботоспособный код, тому от меня бутылочка пива в знак благодарности.

ksa 14.12.2011 10:05

ehan, твоя вёрстка ППЦ! :D Но другого небыло...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function (){
	$('#b1').click(function (){
		$('a.five[onclick='+"javascript:JVXVote(2267,5,225,54,'x',1);"+']').css('color','red');
	});
	$('#b2').click(function (){
		$(':hidden[name="cid"][value="2266"]').parent().parent().parent().css('color','red');
	});
});
</script>
</head>
<body>
<div class="item ">
   <div class="item-bg">			
      <div class="extravote-container">
         <ul class="extravote-stars">
            <li id="2266" class="current-rating"></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,1,225,54,'x',1);" class="one">1</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,2,225,54,'x',1);" class="two">2</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,3,225,54,'x',1);" class="three">3</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,4,225,54,'x',1);" class="four">4</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,5,225,54,'x',1);" class="five">5</a></li>
         </ul>
       </div>
   </div>
<span id="extravote_2267_x" class="extravote-count"><small>( 54 Votes )</small></span>

<form method="post" action="">
<span class="content_rating">
<span class="content_vote">
	Худший<input type="radio" alt="vote 1 star" name="user_rating" value="1" />
	<input type="radio" alt="vote 2 star" name="user_rating" value="2" />
	<input type="radio" alt="vote 3 star" name="user_rating" value="3" />
	<input type="radio" alt="vote 4 star" name="user_rating" value="4" />
	<input type="radio" alt="vote 5 star" name="user_rating" value="5" checked="checked" />Лучший&nbsp;
	<input class="button" type="submit" name="submit_vote" value="Рейтинг" />
	<input type="hidden" name="task" value="vote" />
	<input type="hidden" name="option" value="com_content" />
	<input type="hidden" name="cid" value="2266" />
	<input type="hidden" name="url" value="..." />
</span>
</form>
</div>
<button id='b1'>Искать ссылку</button>
<button id='b2'>Искать форму</button>
</body>
</html>

ehan 14.12.2011 11:28

Код ужасен, но он не мой ))) Сейчас по нажатию кнопки ищет ссылку, выборка действительно работает. Просто необходимо немножко другое, чтобы происходил автоматический клик при загрузке страницы. Возможно такое реализовать? Для внедрения скрипта на страницу использую greasemonkey.

Pavel M. 14.12.2011 11:47

Цитата:

Сообщение от ehan
чтобы происходил автоматический клик

может быть это подойдет http://api.jquery.com/trigger/ ?

ksa 14.12.2011 13:13

Цитата:

Сообщение от ehan
Возможно такое реализовать?

Я не сторонник таких действий... :-E

ehan 14.12.2011 13:25

Просто очень надо ))))

ksa 14.12.2011 13:42

Не-не-не. :nono: И даже не уговаривай... :no:

ehan 14.12.2011 13:47

Кстати первое условье отыскивает нужное условье:
$('#b1').click(function (){
		$('a.five[onclick='+"javascript:JVXVote(2267,5,225,54,'x',1);"+']').css('color','red');
	});

А второе условие:
$('#b2').click(function (){
		$(':hidden[name="cid"][value="2266"]').parent().parent().parent().css('color','red');
	});

Не выделяет кнопку submit.

ksa 14.12.2011 13:56

Цитата:

Сообщение от ehan
Не выделяет кнопку submit.

А её не нужно выделять... :) достаточно просто запустить метод submit() той формы... ;)

ksa 14.12.2011 14:07

Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function (){
	$('#b1').click(function (){
		$('a.five[onclick='+"javascript:JVXVote(2267,5,225,54,'x',1);"+']').click();
	});
	$('#b2').click(function (){
		$(':hidden[name="cid"][value="2266"]').parent().parent().parent().get(0).submit();
	});
});
function JVXVote() {
	alert('Go!');
};
</script>
</head>
<body>
<div class="item ">
   <div class="item-bg">			
      <div class="extravote-container">
         <ul class="extravote-stars">
            <li id="2266" class="current-rating"></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,1,225,54,'x',1);" class="one">1</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,2,225,54,'x',1);" class="two">2</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,3,225,54,'x',1);" class="three">3</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,4,225,54,'x',1);" class="four">4</a></li>
            <li><a href="javascript:void(null)" onclick="javascript:JVXVote(2267,5,225,54,'x',1);" class="five">5</a></li>
         </ul>
       </div>
   </div>
<span id="extravote_2267_x" class="extravote-count"><small>( 54 Votes )</small></span>

<form method="post" action="">
<span class="content_rating">
	<span class="content_vote">
		Худший<input type="radio" alt="vote 1 star" name="user_rating" value="1" />
		<input type="radio" alt="vote 2 star" name="user_rating" value="2" />
		<input type="radio" alt="vote 3 star" name="user_rating" value="3" />
		<input type="radio" alt="vote 4 star" name="user_rating" value="4" />
		<input type="radio" alt="vote 5 star" name="user_rating" value="5" checked="checked" />Лучший&nbsp;
		<input class="button" type="submit" name="submit_vote" value="Рейтинг" />
		<input type="hidden" name="task" value="vote" />
		<input type="hidden" name="option" value="com_content" />
		<input type="hidden" name="cid" value="2266" />
		<input type="hidden" name="url" value="..." />
	</span>
</span>
</form>
</div>
<button id='b1'>Кликнуть ссылку</button>
<button id='b2'>Отправить форму</button>
</body>
</html>


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