Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   В чем ошибка (https://javascript.ru/forum/misc/67545-v-chem-oshibka.html)

MixPetrov 24.02.2017 16:48

Можете дать ссылки на информацию о передаче переменных и их значений между файлами. Буду очень признателен.

рони 24.02.2017 17:13

MixPetrov,
я не могу вам помочь.

MixPetrov 24.02.2017 17:26

На самом деле Вы уже очень помогли.

Скажите почему так работать не будет?

В файле js
$ (function	() {
  function mathC(product_id, nmb){
    var nmb = +($('input[name=\'' + product_id + '\']').val().dataset.nmb);
   // var ns = +this.value;
    //ns = ns || 0;
    //ns = Math.ceil(ns/nmb)*nmb;
    //this.value = ns
		var ns = +$('input[name=\'' + product_id + '\']').val();
		ns = ns || 0;
		ns = Math.ceil(ns/nmb)*nmb;
		$('input[name=\'' + product_id + '\']').val(ns)
	}
    var timer;
    $('.quantity_cart [type="text"]').on("input", function() {
        window.clearTimeout(timer);
        timer = window.setTimeout(mathC, 1200)
    })
});


В файле php (firebug)

<div class="quantity_cart">
<span class="minus" onclick="quantity(2, '-10', '20', '125')"><</span>
<input name="2" oninput="mathC(2,10); isright(2,125,20); recalc(2);" size="2" value="20" maximum="125" quantity="125" minimum="10" data-nmb="10" type="text">
<span class="plus" onclick="quantity(2, '+10', '10', '125')">></span>
</div>


:thanks:

Пойду азы изучать

рони 24.02.2017 17:33

Цитата:

Сообщение от MixPetrov
Скажите почему так работать не будет?

Цитата:

Сообщение от рони
переменная product_id с неба прилетит.

:(

выберите что-то одно либо onclick, либо addEventListener, либо jquery -- лучше addEventListener

MixPetrov 24.02.2017 17:54

oninput="mathC(2,10);
где 2 = <?php echo $product['product_id']; ?> - переменная product_id

MixPetrov 25.02.2017 10:32

Переменные передаются округление работает, не подключается settimeout

MixPetrov 26.02.2017 16:30

Ребят, помогите объясните где не так делаю, уже в голове не то что каша а пена просто. 

	$ (function	() { 
		function mathC(product_id, nmb){ // сюда не приходят значения product_id и nmb
		var nmb = +($('input[name=\'' + product_id + '\']').val().dataset.nmb); // здесь похоже не правильно
		var ns = +$('input[name=\'' + product_id + '\']').val();
		ns = ns || 0;
		ns = Math.ceil(ns/nmb)*nmb;
		$('input[name=\'' + product_id + '\']').val(ns)
		}
		var timer;
		$('.quantity_cart [type="text"]').on("input", function() {
        window.clearTimeout(timer);
        timer = window.setTimeout(mathC, 1200)
		})
	});
		
		<div class="quantity_cart">
		<input type="text" name="product_id" oninput="mathC($product_id,$nmb);" size="2" value="20" maximum="125" quantity="125" minimum="10" data-nmb="10" type="text">
		</div>

Paguo-86PK 26.02.2017 16:36

Цитата:

Сообщение от MixPetrov (Сообщение 445544)
Ребят, помогите объясните где не так делаю, уже в голове не то что каша а пена просто.

Пo-моему, setTimeout получает ссылку на инкапсулированную функцию.:blink:

рони 26.02.2017 16:52

Paguo-86PK,
ему надо чтобы данные из oninput перекочевали в jquery --- все возможные решения уже даны в теме, но не помогло, тс продолжает лепить отсебятину, хаотически смешивая все варианты.

MixPetrov 26.02.2017 20:58

рони,
Спасибо! нашел свою ошибку задержка срабатывает отлично.
А можно ли скриптам задать порядок выполнения.
скрипты в *.js выполняются первыми.

Можно ли в
<div class="quantity_cart">
		<input type="text" name="product_id" size="2" value="20" maximum="125" quantity="125" minimum="10" data-nmb="10" type="text">
		</div>

указать скриптам последовательность выполнения?
Что б было как то так:
<input type="text" name="product_id" size="2" oninput="function(mathC);function(is);recalc(product_id)" value="20" maximum="125" quantity="125" minimum="10" data-nmb="10" type="text">


<script type="text/javascript">
$ (function	() {
  function mathC(){
    var nmb = +this.dataset.nmb;
    var ns = +this.value;
    ns = ns || 0;
    ns = Math.ceil(ns/nmb)*nmb;
    this.value = ns
	//alert(nmb);
    }
    var timer;
    $('.quantity_cart [type="text"]').on("input", function() {
        window.clearTimeout(timer);
        timer = window.setTimeout(mathC.bind(this), 1200)
		//alert($('.quantity_cart [type="text"]'));
    })
});
  </script>
	
		<script type="text/javascript">
$ (function	() {
	function is() {
	var maximum = +this.dataset.maximum;
	var minimum = +this.dataset.minimum;
	var ns = +this.value.replace(/\D/g, "") || 0;
	if (ns>maximum)	ns=maximum;	
    if (ns<minimum)  ns=minimum;
	this.value = ns
	alert(maximum);
	}
	var timer;
    $('.quantity_cart [type="text"]').on("input", function() {
        window.clearTimeout(timer);
        timer = window.setTimeout(is.bind(this), 1400)
		//alert($('.quantity_cart [type="text"]'));
    })
});
  </script>


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