我的快速浏览页面的实时计算

时间:2015-11-24 13:09:29

标签: javascript php jquery

我正在开发自己的超市网站, 我有工作现场计算脚本从网站,如果应用在我的弹出页面进行实时计算,例如:1公斤大米(200美元)×2数量= 400美元。 这个概念适用于这个页面,它不起作用。 请发送帮助我。 基本上我需要基于quanty和kg选择的实时计算。



  <script type='text/javascript' src='//code.jquery.com/jquery-2.1.0.js'></script>
<script type="text/javascript">
$('#size').change(function() {
    updateValues();
});

$('#qty').keyup(function() {
    updateValues();
});

function updateValues(){
    // Remove any previously set values
    $('#show_box, #total_box').empty();
    var qty =  document.getElementById("qty").value;
    var price = 0;
    var rate = 0;    
    $('#size').find('option:selected').each(function() {
        // Check that the attribute exist, so that any unset values won't bother
        if ($(this).attr('data-price')) {             
            price = $(this).data('price');
            rate = price*qty;
            $('#show_box').append('<h6>' + rate + '</h6>');
        }
    });
    $('#total_box').text(rate);
}    </script>
&#13;
<!--==================================
		Quick view modal window
======================================-->

<div id="quick_view" class="modal_window">

	<button class="close arcticmodal-close"></button>

	<div class="clearfix">

		<!-- - - - - - - - - - - - - - Product image column - - - - - - - - - - - - - - - - -->

		<div class="single_product">

			<!-- - - - - - - - - - - - - - Image preview container - - - - - - - - - - - - - - - - -->

			<div class="image_preview_container" id="qv_preview">

				<img id="img_zoom" data-zoom-image="images/qv_large_1.JPG" src="images/qv_img_1.jpg" alt="">

			</div><!--/ .image_preview_container-->

			<!-- - - - - - - - - - - - - - End of image preview container - - - - - - - - - - - - - - - - -->

			<!-- - - - - - - - - - - - - - Prodcut thumbs carousel - - - - - - - - - - - - - - - - -->
			
			<div class="product_preview" data-output="#qv_preview">

				<div class="owl_carousel" id="thumbnails">
				
					<img src="images/qv_thumb_1.jpg" data-large-image="images/qv_img_1.jpg" alt="">

					<img src="images/qv_thumb_2.jpg" data-large-image="images/qv_img_2.jpg" alt="">

					<img src="images/qv_thumb_3.jpg" data-large-image="images/qv_img_3.jpg" alt="">

					<img src="images/qv_thumb_4.jpg" data-large-image="images/qv_img_4.jpg" alt="">

				</div><!--/ .owl-carousel-->

			</div><!--/ .product_preview-->
			
			<!-- - - - - - - - - - - - - - End of prodcut thumbs carousel - - - - - - - - - - - - - - - - -->

			<!-- - - - - - - - - - - - - - Share - - - - - - - - - - - - - - - - -->
			
			<div class="v_centered">

				<span class="title">Share this:</span>

				<div class="addthis_widget_container">
					<!-- AddThis Button BEGIN -->
					<div class="addthis_toolbox addthis_default_style addthis_32x32_style">
					<a class="addthis_button_preferred_1"></a>
					<a class="addthis_button_preferred_2"></a>
					<a class="addthis_button_preferred_3"></a>
					<a class="addthis_button_preferred_4"></a>
					<a class="addthis_button_compact"></a>
					<a class="addthis_counter addthis_bubble_style"></a>
					</div>
					<!-- AddThis Button END -->
				</div>
				
			</div>
			
			<!-- - - - - - - - - - - - - - End of share - - - - - - - - - - - - - - - - -->

		</div>

		<!-- - - - - - - - - - - - - - End of product image column - - - - - - - - - - - - - - - - -->

		<!-- - - - - - - - - - - - - - Product description column - - - - - - - - - - - - - - - - -->

		<div class="single_product_description">

			<h3><a href="#">Ivory Body Wash, Original 24 fl oz</a></h3>

			<div class="description_section v_centered">

				<!-- - - - - - - - - - - - - - Product rating - - - - - - - - - - - - - - - - -->
			
				<ul class="rating">

					<li class="active"></li>
					<li class="active"></li>
					<li class="active"></li>
					<li></li>
					<li></li>

				</ul>
					
				<!-- - - - - - - - - - - - - - End of product rating - - - - - - - - - - - - - - - - -->

				<!-- - - - - - - - - - - - - - Reviews menu - - - - - - - - - - - - - - - - -->

				<ul class="topbar">

					<li><a href="#">3 Review(s)</a></li>
					<li><a href="#">Add Your Review</a></li>

				</ul>

				<!-- - - - - - - - - - - - - - End of reviews menu - - - - - - - - - - - - - - - - -->

			</div>

			<div class="description_section">

				<table class="product_info">

					<tbody>

						<tr>

							<td>Manufacturer: </td>
							<td><a href="#">Chanel</a></td>

						</tr>

						<tr>

							<td>Availability: </td>
							<td><span class="in_stock">in stock</span> 20 item(s)</td>

						</tr>

						<tr>

							<td>Product Code: </td>
							<td>PS06</td>

						</tr>

					</tbody>

				</table>

			</div>

			<hr>

			<div class="description_section">

				<p>Mauris fermentum dictum magna. Sed laoreet aliquam leo. Ut tellus dolor, dapibus eget, elementum vel, cursus eleifend, elit. Aenean auctor wisi et urna.</p>

			</div>

			<hr>

			<p class="product_price"><s>$9.99</s> <b class="theme_color">$5.99</b></p>

			<!-- - - - - - - - - - - - - - Product size - - - - - - - - - - - - - - - - -->

			<div class="description_section_2 v_centered">
				
				<span class="title">Size:</span>

				<div class="custom_select min">
				<select id="size" >
    <option id="def" value="default" selected>select a course</option>
    <option id="mth" data-price="100" value="1">1 kg</option>
    <option id="eng" data-price="200" value="2">2 kg</option>
    <option id="chm" data-price="300" value="3">3 kg</option>
    <option id="phy" data-price="400" value="4">4 kg</option>
</select>

				</div>

			</div>

			<!-- - - - - - - - - - - - - - End of product size - - - - - - - - - - - - - - - - -->

			<!-- - - - - - - - - - - - - - Quantity - - - - - - - - - - - - - - - - -->

			<div class="description_section_2 v_centered">
				
				<span class="title">Qty:</span>

				<div class="qty min clearfix">

					<button class="theme_button" data-direction="minus">&#45;</button>
						<button class="theme_button" data-direction="minus">&#45;</button>
                <input type="text" value="2" id="qty">
					<button class="theme_button" data-direction="plus">&#43;</button>

			</div>

			<!-- - - - - - - - - - - - - - End of quantity - - - - - - - - - - - - - - - - -->

			<!-- - - - - - - - - - - - - - Product actions - - - - - - - - - - - - - - - - -->

			<div class="buttons_row">

				<button class="button_blue middle_btn">Add to Cart</button>

				<button class="button_dark_grey def_icon_btn middle_btn add_to_wishlist tooltip_container"><span class="tooltip top">Add to Wishlist</span></button>

				<button class="button_dark_grey def_icon_btn middle_btn add_to_compare tooltip_container"><span class="tooltip top">Add to Compare</span></button>

			</div>

			<!-- - - - - - - - - - - - - - End of product actions - - - - - - - - - - - - - - - - -->

		</div>

		<!-- - - - - - - - - - - - - - End of product description column - - - - - - - - - - - - - - - - -->

	</div>

</div>

<!--==================================
		End quick view modal window
====================================== -->
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

所以也要将更改事件添加到文本框中。

$('#wow, #qty').change(function() {

答案 1 :(得分:0)

只需使用calcul处理创建一个函数。 并针对每个表单元素调用特定事件的函数:change用于选择,keyup用于输入文本。

$('#wow').change(function() {
    updateValues();
});

$('#qty').keyup(function() {
    updateValues();
});

function updateValues(){
    // Remove any previously set values
    $('#show_box, #total_box').empty();
    var qty =  document.getElementById("qty").value;
    var price = 0;
    var rate = 0;    
    $('#wow').find('option:selected').each(function() {
        // Check that the attribute exist, so that any unset values won't bother
        if ($(this).attr('data-price')) {             
            price = $(this).data('price');
            rate = price*qty;
            $('#show_box').append('<h6>' + rate + '</h6>');
        }
    });
    $('#total_box').text(rate);
}

编辑:

编辑完成后,我试图了解您的需求。不确定它是你想要的,但我希望如此。

我在HTML中做了一些修改(HTML元素的一些新ID)。

以下是测试更改的小提琴:Fiddle

我假设您的代码中包含jQuery

的Javascript

<script type="text/javascript">

    //Calculate price on size change
    $(document).on('change', '#size', function() {      
        updateValues();
    });

    //Calcule price on qty change
    $(document).on('keyup', '#qty', function() {
        //If qty is not a number, force default value : 1
        if(true === isNaN($(this).val()))
        {
            $(this).val(1);
        }
        updateValues();
    });

    //Change qty and calculate price when clicking on + or -
    $(document).on('click', '.theme_button', function(){
        var qty = $('#qty').val();

        //Il qty is not a number : default value is 1
        if(true === isNaN(qty))
        {
            qty = 1;
        }
        else
        {
            //Check if qty is incremented or decremented
            qty = parseInt(qty);
            if('plus' == $(this).attr('data-direction'))
            {
                qty++;
            }
            else
            {
                qty--;
            }

            //Min value for qty is 1
            if(qty <= 0)
            {
                qty = 1;
            }
        }

        $('#qty').val(qty);
        updateValues();
    });

    //Calculate price for qty and size
    function updateValues(){
        // Remove any previously set values
        $('#product_price').empty();
        var qty =  document.getElementById("qty").value;
        var price = 0;
        var rate = 0;    
        $('#size').find('option:selected').each(function() {
            // Check that the attribute exist, so that any unset values won't bother
            if ($(this).attr('data-price')) {             
                price = $(this).data('price');
                rate = price*qty;               
            }
        });

        $('#product_price').text('$'+rate);
    }
</script>

HTML:

<p id="product_price">Choose a product</p>
<!-- - - - - - - - - - - - - - Product size - - - - - - - - - - - - - - - - -->
<div class="description_section_2 v_centered">              
    <span class="title">Size:</span>
    <div class="custom_select min">
        <select id="size" >
            <option id="def" value="default" selected>select a course</option>
            <option id="mth" data-price="100" value="1">1 kg</option>
            <option id="eng" data-price="200" value="2">2 kg</option>
            <option id="chm" data-price="300" value="3">3 kg</option>
            <option id="phy" data-price="400" value="4">4 kg</option>
        </select>
    </div>
</div>
<!-- - - - - - - - - - - - - - End of product size - - - - - - - - - - - - - - - - -->

<!-- - - - - - - - - - - - - - Quantity - - - - - - - - - - - - - - - - -->
<div class="description_section_2 v_centered">
    <span class="title">Qty:</span>
    <div class="qty min clearfix">
        <button class="theme_button" data-direction="minus">&#45;</button>
        <input type="text" value="2" id="qty">
        <button class="theme_button" data-direction="plus">&#43;</button>
</div>
<!-- - - - - - - - - - - - - - End of quantity - - - - - - - - - - - - - - - - -->