Search code examples
javascriptprototypejs

Does Prototype has a no conflict option like jQuery?


I have tried Googling this but it only ever comes up with the jQuery noconflict option.

I would use this but my site is very jQuery heavy and it will take quite a white, as well as this the prototype code I'm adding may be temporary and is only a few lines.

If there is no prototype no conflict option how would I convert the below code, my javascript codes are limited?

// JavaScript Document
// calculate price based on quantity
function changeQty(change){
var currentQty = parseInt($F('quant')) // Where quant is the id of your quantity input field. Gets value of currentQty field

switch (change) {
    case 'add':
        currentQty += 1
        $('quant').value = currentQty
        calculate()
        break
    case 'subtract':
        if (currentQty > 1) { // only subtract if qty is greater than zero
            currentQty -= 1
            $('quant').value = currentQty
            calculate()
        }
        break
    case 'field':
        if (currentQty > 0) {
            window.setTimeout('calculate()', 500)
        }
        break
}
}
function calculate(){
var currentQty = parseInt($F('quant')) // Where quant is the id of your quantity input field. Gets value of currentQty field    
var jsnormalprice = $F('jsnormalprice') // Where jsnormalprice is the id of your hidden base price field. Gets value of base_price field    
var jsspecialprice = $F('jsspecialprice') // Where  is the id of your hidden base price field. Gets value of base_price field   

if (currentQty > 0) { // Don't want price to display if zero if customer zeros out quantity
    var new_jsnormalprice = jsnormalprice * currentQty // Calculate the price.      
    var new_jsnormalprice = new_jsnormalprice.toFixed(2) // Only allow 2 decimals. I'll let you add rounding features up or down.

    var new_jsspecialprice = jsspecialprice * currentQty // Calculate the price.        
    var new_jsspecialprice = new_jsspecialprice.toFixed(2) // Only allow 2 decimals. I'll let you add rounding features up or down.

} else { // set price back to original price
    new_jsnormalprice = jsnormalprice
    new_jsspecialprice = jsspecialprice
}   

$('jsnormalpriceshow').update(new_jsnormalprice) // Where jsnormalpriceshow is the id of your span for the echoed product price
$('jsspecialpriceshow').update(new_jsspecialprice) // Where jsspecialpriceshow is the id of your span for the echoed product price

}

Solution

  • Prototype does not have a no conflict mode...

    I've converted your code, but I may have missed a spot or two...

    Generally, $('elemID') => $('#elemID') and $F('elemID') => $('#elemID').val() is what I've done..

    // JavaScript Document
    // calculate price based on quantity
    function changeQty(change){
    var currentQty = parseInt($('#quant').val()) // Where quant is the id of your quantity input field. Gets value of currentQty field
    
    switch (change) {
        case 'add':
            currentQty += 1
            $('#quant').val(currentQty)
            calculate()
            break
        case 'subtract':
            if (currentQty > 1) { // only subtract if qty is greater than zero
                currentQty -= 1
                $('#quant').val(currentQty)
                calculate()
            }
            break
        case 'field':
            if (currentQty > 0) {
                window.setTimeout('calculate()', 500)
            }
            break
    }
    }
    function calculate(){
    var currentQty = parseInt($('#quant').val()) // Where quant is the id of your quantity input field. Gets value of currentQty field    
    var jsnormalprice = $('#jsnormalprice').val() // Where jsnormalprice is the id of your hidden base price field. Gets value of base_price field    
    var jsspecialprice = $('#jsspecialprice').val() // Where  is the id of your hidden base price field. Gets value of base_price field   
    
    if (currentQty > 0) { // Don't want price to display if zero if customer zeros out quantity
        var new_jsnormalprice = jsnormalprice * currentQty // Calculate the price.      
        var new_jsnormalprice = new_jsnormalprice.toFixed(2) // Only allow 2 decimals. I'll let you add rounding features up or down.
    
        var new_jsspecialprice = jsspecialprice * currentQty // Calculate the price.        
        var new_jsspecialprice = new_jsspecialprice.toFixed(2) // Only allow 2 decimals. I'll let you add rounding features up or down.
    
    } else { // set price back to original price
        new_jsnormalprice = jsnormalprice
        new_jsspecialprice = jsspecialprice
    }   
    
    $('#jsnormalpriceshow').html(new_jsnormalprice) // Where jsnormalpriceshow is the id of your span for the echoed product price
    $('#jsspecialpriceshow').html(new_jsspecialprice) // Where jsspecialpriceshow is the id of your span for the echoed product price
    
    }