Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как заставить выполнять функцию option, автоматически?

Как заставить выполнять функцию option, автоматически?


     27.02.2018    jQuery, Общие вопросы по PHP    1252

вопрос
Есть функции:

$(document).on("change", ".status_pm", function(){
	if ( this.value == 1 ) {
		var pmid = $(this).closest("tr").data("id")
		$.post(module_url, { action:'userdel', pmid:pmid }, function(data){
			console.log(data)
			if( data == 'ok' ) $(".pm_list"+pmid).remove()
			else DLEalert('Произошла ошибка!', 'Ошибка')

		} )

	}else if( this.value == 2 ) {
		var pmid = $(this).closest("tr").data("id")
		$.post(module_url, { action:'update_users_status', pmid:pmid }, function(data){
			console.log(data)
			if( data != 'ok' ) DLEalert('Произошла ошибка!', 'Ошибка')
			else {
				$(".pm_list"+pmid+" .nread1").after('<a href="#" class="show_pm kngren">Посмотреть контакты</a>').remove()
		        $(".pm_list"+pmid+" .show").after('<input type="text" name="textusers" class="textusers" placeholder="Cумма"><input type="submit" disabled="disabled" class="update_users_status" value="Отправить"><br /><p class="pinfo">В поле "Сумма" укажите полученную от заказа выручку. На основание её будет сформирован и отправлен закзчику, электронный чек.</p>').remove()//<a href="#" class="show_pm kngren">Посмотреть контакты</a>
			}
		} )
	}
})	

В HTML под эти функции прописан код:

<select name="status_pm" class="status_pm">
<option value="0">Выбрать</option>
<option value="1">Отказ</option>
<option value="2">Принять</option></select>

Как изменить функцию, чтобы если пользователь через 10 секунд не выбрал
<option value="2">Принять</option>

то автоматически принимались условия
<option value="1">Отказ</option>

Ответа пока нет


22 комментария

Twelvee
Юзер

Twelvee - 27 февраля 2018 20:16 -

Таймер + проверка на значение селекта

onecool
Юзер

onecool - 27 февраля 2018 20:23 -


var $select = $('.status_pm');
var value = Number($select.val());

$select.on('change', function() {
value = Number($(this).val());
});

setTimeout(function() {
if (value !== 2) {
$select.val(1).click();
}
}, 6000);//1000 - 1сек.

Таймер есть такого вида, но он работает только когда открыта html страница, а нужно чтобы это все срабатывало не зависимо от того открыта страница или нет

vitnet
PHP-developer

vitnet - 27 февраля 2018 20:53 -

Цитата: onecool
а нужно чтобы это все срабатывало не зависимо от того открыта страница или нет

А вот здесь подробнее ...

onecool
Юзер

onecool - 27 февраля 2018 21:00 -

var $select = $('.status_pm');
var value = Number($select.val());

$select.on('change', function() {
value = Number($(this).val());
});

setTimeout(function() {
if (value !== 2) {
$select.val(1).click();
}
}, 6000);//1000 - 1сек.

Этот код выбирает значение option только если находиться на странице со значениями:
<select name="status_pm" class="status_pm">
<option value="0">Выбрать</option>
<option value="1">Отказ</option>
<option value="2">Принять</option></select>

А нужно, чтобы значение:
<option value="1">Отказ</option>
автоматически отправлялось

vitnet
PHP-developer

vitnet - 27 февраля 2018 21:03 -

А где в таком случае будем брать значение data-id, если мы не находимся на той странице?
$(this).closest("tr").data("id")

onecool
Юзер

onecool - 27 февраля 2018 21:18 -

Я это к тому, что допустим пример:
Я отправляю личное сообщение пользователю сайта, когда он получает это сообщение у него есть два варианта, либо он примит сообщение (путем выбора <option value="2">Принять</option>) и оно открывается полностью для чтения, либо он отказывается (<option value="1">Отказ</option>) и оно удаляется.
А код с автовыбором <option value="1">Отказ</option> мне нужен на тот случай, если пользователь просто закроет страницу или покинит сайт не выбрав никакого значения, чтобы у него сообщение само удалилось

onecool
Юзер

onecool - 27 февраля 2018 21:28 -

Функция .click() работает только когда страница html открыта. Нужно setTimeout как то к
if ( this.value == 1 ) {
var pmid = $(this).closest("tr").data("id")
$.post(module_url, { action:'userdel', pmid:pmid }, function(data){
console.log(data)
if( data == 'ok' ) $(".pm_list"+pmid).remove()
else DLEalert('Произошла ошибка!', 'Ошибка')

} )

}
привязать

vitnet
PHP-developer

vitnet - 27 февраля 2018 21:30 -

Это в JS

Это в окно с сообщением

onecool
Юзер

onecool - 27 февраля 2018 21:46 -

Выбор работает но действий не происходит

vitnet
PHP-developer

vitnet - 27 февраля 2018 21:47 -

Замените на свое
module_url = '/engine/ajax/file.php';

onecool
Юзер

onecool - 27 февраля 2018 22:46 -

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

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

onecool
Юзер

onecool - 27 февраля 2018 23:12 -

может setTimeout до определенного времени сделать

Twelvee
Юзер

Twelvee - 27 февраля 2018 20:29 -

Почитайте разницу между сеттаймаут и сетинтервал

onecool
Юзер

onecool - 27 февраля 2018 20:37 -

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

mavne215
Юзер

mavne215 - 27 февраля 2018 20:59 -

почему не отвечаешь ?

mavne215
Юзер

mavne215 - 27 февраля 2018 21:00 -

Twelvee почему не отвечаешь ?

mavne215
Юзер

mavne215 - 27 февраля 2018 21:04 -

Twelvee заказал мод , перечислил деньги и теперь не отвечаешь ?! месяц прошло

onecool
Юзер

onecool - 27 февраля 2018 21:10 -

ты мне?

Twelvee
Юзер

Twelvee - 28 февраля 2018 04:10 -

Я прошу прощения за поддержку оффтопа. Но я сделал абсолютно все, за что мне заплатили.

mavne215
Юзер

mavne215 - 27 февраля 2018 21:12 -

нет. с Twelvee

onecool
Юзер

onecool - 27 февраля 2018 21:21 -

Может подумаем над моим вопросом, а там и твой решим

BRAGA
Юзер

BRAGA - 28 февраля 2018 11:03 -

Можно выкачать html страницы с select'ом, не знаю зачем, может что-то придумаете:
/**
 * Отправить запрос и получить html страницы с select
 * @returns XMLHttpRequest объект
**/
function getHtmlPage() {
	return $.ajax({ url: 'https://site.com/page.html', method: 'GET', dataType: 'html' });
};

getHtmlPage().done(function(response) {
	var html = $.parseHTML(response);
	var $select = $(html).find('#selector > .element').siblings('.element').parents('#example');
	var value = Number($select.val());
	if (value !== 2) {
		// значения select на указанной странице не 2, что-то отправить/сделать
	}
});

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх