One problem you have initially is with your selector syntax. If you want to use special characters in jQuery's selector, aka '$', you must escape them with double slashes '\\' like I have done in the example below.
The values you have currently are obviously not numbers but even if they were, you would still receive 'NAN'. You must use parseInt() on the value parameters as the values themselves are considered strings, not numbers.
parseInt() accepts two parameters. The first being the value you would like to convert into an integer and the second being the radix. In my example I used a radix of '10' which converts the values to a simple decimal number.
If you'd like to learn more about parseInt here's a link: http://www.w3schools.com/jsref/jsref_parseInt.asp
I went ahead and set your two input variable's default values to actual numbers so you can test for yourself.
$(document).ready(function() {
$("body").delegate(".qty","keyup", function(){
var pid = $(this).attr("pid");
var qty = parseInt($("#\\$qty-"+'\\'+pid).val(), 10);
var price = parseInt($("#\\$price-"+'\\'+pid).val(), 10);
var total = qty * price;
alert(total);
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div class='col-md-2'>$pro_name</div>
<div class='col-md-2'><input type='text' class='form-control qty' pid='$pro_id' id='$qty-$pro_id' value='2'></div>
<div class='col-md-2'><input type='text' class='form-control price' pid='$pro_id' id='$price-$pro_id' value='5' disabled></div>
<div class='col-md-2'><input type='text' class='form-control total' pid='$pro_id' id='$total-$pro_id' value='$total' disabled></div>
</body>