Для второго вопроса я бы сделал то же самое и использовал бы бегунок диапазона jQuery, как предложил Хаим.
По первому вопросу, который я предполагаю, вы захотите расширить его до форм, отличных от квадрата. Вы можете захотеть, чтобы пользователь выбрал 7/8 от пиццы или аналогичной. jQuery selectables и resizables могут работать для квадратной задачи, но будет очень трудно реализовать (и использовать) для пиццы (или аналогичной). Я бы использовал тег html <map>
( см. Здесь, в W3schools ) и связывал команду javacsript с каждым щелчком мыши по каждой области на карте.
Например, если вы создали карту в интерактивном режиме с помощью http://www.carlosag.net/Tools/XMap/ (или аналогичной), затем свяжите каждую область с чем-то вроде:
<area ... onclick="javascript:if (typeof(pizza[0])=='undefined'){pizza[0] = 1/8;}else{pizza[0] = 0;}">
<area ... onclick="javascript:if (typeof(pizza[1])=='undefined'){pizza[1] = 1/8;}else{pizza[1] = 0;}">
<area ... onclick="javascript:if (typeof(pizza[2])=='undefined'){pizza[2] = 1/8;}else{pizza[2] = 0;}">
, где
<script>
var pizza = new Array();
Array.prototype.sum = function() {
return (! this.length) ? 0 : this.slice(1).sum() +
((typeof this[0] == 'number') ? this[0] : 0);
}; // borrowed from http://www.gscottolson.com/weblog/2007/12/09/sum-array-prototype-for-javascript/
</script>
при отправке формы вы просто отправите pizza.sum()
! Конечно, это можно записать более элегантно в функцию, которая будет включать выделение выделенных областей, но: -)