2017-09-25 1 views
1

Ich erhalte einen Syntaxfehler. Das Sagen meines Codes funktioniert möglicherweise nicht, bis ich diesen Fehler behebe, aber ich sehe nichts falsch damit. Die Fehlerzeile zeigt darauf let weekAgo = new Date(); aber das sieht für mich richtig aus. Übersehe ich etwas? Es verursacht auch den Text in meinem Datepicker "from" und "to", um nicht automatisch angezeigt zu werden. Jede Hilfe würde sehr geschätzt werden. Der Text erscheint in my fiddle aber aus irgendeinem Grund nicht in meiner Anwendung. Aber die Anwendung wirft diesen Syntaxfehler. Also jede Hilfe wäre sehr nett!JS Funktionssyntaxfehler mit Datepicker

<script> 
    (function() { 
    //move these out since they don't need to 
    const today = new Date(); 
    let weekAgo = new Date(); 
    weekAgo.setDate(today.getDate() - 7); 
    const $from = $("#StartDate"); 
    const $to = $("#EndDate"); 

    $(function() { //DOM-loaded 
    //these don't change 
    const reportFields = $('#location, #locationbtns, #locationtextarea, #chosendates, #submitbtn, #formattype'); 
    const employeeFields = $('#employeelist, #employeelistbtns, #employeelisttextarea'); 
    const loc = $("#loc"); 
    const EmployeeName = $("#EmployeeName"); 
    const selectedElement = $('#selected'); 
    const selected1Element = $('#selected1'); 
    const reportType = $('#reporttype'); 
    const generatereportform = $("form[name=generatereport]"); 
    $(document).click(function(clickEvent) { 
     switch (clickEvent.target.id) { 
     case 'add': 
      setLocationOptionsSelected(true); 
      break; 
     case 'rem': 
      setLocationOptionsSelected(false); 
      break; 

     case 'add1': 
      setSelectedOnEmployeeOptions(true); 
      break; 
     case 'rem1': 
      setSelectedOnEmployeeOptions(false); 
      break; 
     } 
    }); 
    $(document).change(function(changeEvent) { 
     switch (changeEvent.target.id) { 
     case 'reporttype': 
      handleReportTypeChange(); 
      break; 
     case 'loc': 
      handleLocationChange(); 
      break; 
     case 'EmployeeName': 
      handleEmployeeNameChange(); 
      break; 
     } 
    }); 

    function handleReportTypeChange() { 
     var value = reportType.val(); 

     if (value === "checklistreports") { 
     generatereportform[0].reset(); 
     reportFields.show(); 
     loc.prop('required', true); 
     employeeFields.show(); 
     generatereportform.attr("action", "index.cfm?content=reportsassociate"); 
     EmployeeName.prop('required', true); 
     } else if (value === "locationreports") { 
     generatereportform[0].reset(); 
     reportFields.show(); 
     loc.prop('required', true); 
     employeeFields.hide(); 
     generatereportform.attr("action", "index.cfm?content=reportslocation"); 
     EmployeeName.prop('required', false); 
     } else { 
     generatereportform[0].reset(); 
     reportFields.hide(); 
     loc.prop('required', false); 
     employeeFields.hide(); 
     generatereportform.attr("action", "#"); 
     EmployeeName.prop('required', false); 
     } 

     resetDatePickers(); 
    } 

    function dateSelectHandler(dateText) { 
     if (this.id == 'StartDate') { 
     $to.datepicker("option", "minDate", dateText); 
     } else { 
     $from.datepicker("option", "maxDate", dateText); 
     } 
    } 

    function resetDatePickers() { 
     let datePickerConfig = { 
     changeMonth: true, 
     maxDate: today, 
     onSelect: dateSelectHandler 
     }; 
     $from.datepicker(datePickerConfig).datepicker('setDate', weekAgo); 
     $to.datepicker(Object.assign(datePickerConfig, { 
     minDate: weekAgo 
     })).datepicker('setDate', today); 
    } 

    function handleLocationChange() { 
     var selected = []; 

     loc.find("option:selected").each(function() { 
     selected.push($(this).text()); 
     }); 

     selectedElement.val(selected.join("\n")); 
    } 

    function setLocationOptionsSelected(selected) { 
     loc.find("option").prop("selected", selected); 
     loc.change(); 
    } 


    function setSelectedOnEmployeeOptions(selected) { 
     EmployeeName.find("option").prop("selected", selected); 
     EmployeeName.change(); 
    } 

    function handleEmployeeNameChange() { 
     var selected = []; 
     EmployeeName.find("option:selected").each(function() { 
     selected.push($(this).text()); 
     }); 
     selected1Element.val(selected.join("\n")); 
    } 
    }); 

})(); 
</script> 
+0

Sie haben erwähnt, welche Linie die Syntaxfehler Punkte, aber Was sagt der Syntaxfehler eigentlich? –

+0

Alles, was Dreamweaver sagt, ist ein Syntaxfehler in dieser Zeile. "Codehinweis funktioniert möglicherweise erst, wenn Sie diesen Fehler behoben haben." –

+0

'const today = new Date();' In welchem ​​Browser laufen Sie? 'const' ist ES6. – Keith

Antwort

1

Object.assign() wird nicht von IE 11 unterstützt (was das betrifft, oder jede Version. Siehe den Browser Compatibilty Abschnitt der Dokumentation MDN). Eine Abhilfe ist lediglich festgelegt, dass minDate Eigenschaft manuell:

let toDatePickerConfig = datePickerConfig; 
toDatePickerConfig.minDate = weekAgo; 
$to.datepicker(toDatePickerConfig).datepicker('setDate', today); 

eine Demonstration dieses Siehe unten:

const today = new Date(); 
 
let weekAgo = new Date(); 
 
weekAgo.setDate(today.getDate() - 7); 
 
$(function() { 
 
    const $from = $("#StartDate"); 
 
    const $to = $("#EndDate"); 
 

 
    function dateSelectHandler(dateText) { 
 
    if (this.id == 'StartDate') { 
 
     $to.datepicker("option", "minDate", dateText); 
 
    } else { 
 
     $from.datepicker("option", "maxDate", dateText); 
 
    } 
 
    } 
 
    let datePickerConfig = { 
 
    changeMonth: true, 
 
    maxDate: today, 
 
    onSelect: dateSelectHandler 
 
    }; 
 
    $from.datepicker(datePickerConfig).datepicker('setDate', weekAgo); 
 
    let toDatePickerConfig = datePickerConfig; 
 
    toDatePickerConfig.minDate = weekAgo; 
 
    $to.datepicker(toDatePickerConfig).datepicker('setDate', today); 
 
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
 
<span class="srch_title" for="StartDate">From:</span> 
 
<input type='text' name="StartDate" id="StartDate" value="" required/> 
 

 
<span class="srch_title" for="EndDate">To:</span> 
 
<input type='text' name="EndDate" id="EndDate" value="" required/>

+0

wollen Sie einen Blick darauf werfen? https://codereview.stackexchange.com/questions/176527/js-function-warning-before-closing-browser Ich bin auf der Suche nach dem besten Weg, dies in meiner Umgebung zu schreiben –