I think you can take this approach.
- From your javascript button, launch a flow and pass parameters to the flow.
- In the flow, place a date field where user can select the date.
- Finally based on passed parameters you should update the case records.
I have given a code how you can pass parameters (CaseIds) to the flow.
Code behind javascript button
{!RequireScript("/soap/ajax/29.0/connection.js")}
var caseObj = new sforce.SObject("Case");
var selectedCases = {!GETRECORDIDS($ObjectType.Case)}; //chosen records from list view checkboxes
//check at-least one record is selected
if (selectedCases[0] == null) {
alert("You must select at least one record");
} else
{
var serverUrl = '{!$Api.Partner_Server_URL_260}';
var position = {!FIND( '/services', $Api.Partner_Server_URL_260)};
var base = serverUrl.substring(0,position-1);
var url = base +encodeURI('/flow/Update_Due_Date?vSelectedCaseIds=' + selectedCases + '&vCaseCount=' + selectedCases.length + '&retURL=/500/o');
window.open(url, '_self');
}
Refer this answer for detailed answer:
Pass Case Ids collection to visual workflow from Case List View Custom Button and update cases taking from input screen