出于某种原因,我视图中的脚本停止工作。他们以前在工作 - 不幸的是我不记得他们什么时候停止工作,所以我无法重现它破坏的地步。但是,我可以肯定地说我根本没有改变脚本。以下是我的观点:
@using errandomWeb.Models
@model errandomWeb.Models.errands
@{
ViewBag.Title = "Get It Done For You";
}
<div id="postErrandContainer" class="manageContainer">
<div id="postErrandHeaderSection" class="manageHeaderSection">
<h1 id="postErrandHeaderTitle" class="manageHeaderTitle">
@ViewBag.Title
</h1>
</div>
<section id="postErrand" class="manageForm">
@using (Html.BeginForm("PostErrandToDB", "errandom", FormMethod.Post, new { @id = "postErrandForm", @class = "form-horizontal", @role = "form" }))
{
@Html.AntiForgeryToken()
<!-- user activity tracking section -->
@Html.HiddenFor(m => m.LatitudePosted, new { @id = "postErrandLatitudePosted", @class = "userActivity" })
@Html.HiddenFor(m => m.LongitudePosted, new { @id = "postErrandLongitudePosted", @class = "userActivity" })
@Html.HiddenFor(m => m.LocationPosted, new { @id = "postErrandLocationPosted", @class = "userActivity" })
<!-- autopopulate errand values with current location -->
<script>
$(document).ready(function defaultPostValues() {
if (!navigator.geolocation) return;
navigator.geolocation.getCurrentPosition(function (userCoordinates) {
geocoder = new google.maps.Geocoder();
userLatLng = new google.maps.LatLng(userCoordinates.coords.latitude, userCoordinates.coords.longitude);
document.getElementById('postErrandLatitudePosted').value = userCoordinates.coords.latitude;
document.getElementById('postErrandLongitudePosted').value = userCoordinates.coords.longitude;
geocoder.geocode({ 'latLng': userLatLng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var result = results[0];
locationPlaceholder = "";
for (var i = 0, len = result.address_components.length; i < len; i++) {
var addressComponent = result.address_components[i];
if (addressComponent.types.indexOf("locality") >= 0) locationPlaceholder = addressComponent.long_name;
}
if (locationPlaceholder != '') {
document.getElementById('postErrandLocationPosted').value = locationPlaceholder;
document.getElementById('postErrandLocationField').value = locationPlaceholder;
window.alert(locationPlaceholder);
}
}
});
});
</script>
<div id="postErrandErrandSection" class="manageSection">
<p id="postErrandErrandSectionTitle" class="manageSectionTitle">
errand
</p>
<div id="postErrandPictureArea" class="manageArea row">
@Html.LabelFor(m => m.Picture, new { @id = "postErrandPictureLabel", @class = "manageLabel col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-3 col-lg-offset-1 col-lg-4" })
<a id="postErrandPictureSelectionButton" class="manageField col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset0 col-md-7 col-lg-offset-0 col-lg-6" href="#">
select a file...
</a>
@Html.TextBoxFor(m => m.Picture, new { @id = "postErrandPictureField", @class = "manageField col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-7 col-lg-offset-0 col-lg-6", @type = "file", @style = "display: none" })
</div>
<hr />
<!-- customization of picture selection button -->
<script>
jQuery("#postErrandPictureSelectionButton").click(function () {
$("#postErrandPictureField").click();
$("#postErrandCroppingArea").show();
});
</script>
<script>
$("#postErrandPictureField").change(function () {
var fullFileName = $("#postErrandPictureField").val()
$("#postErrandPictureSelectionButton").html(fullFileName.substr(fullFileName.lastIndexOf('\\') + 1));
});
</script>
<div id="postErrandCroppingArea" class="manageArea row" style="display: none">
<img id="postErrandOriginal" class="postErrandImage" src="" alt="" style="display: none" />
<canvas id="postErrandCropped" class="postErrandImage" height="5" width="5"></canvas>
<input id="postErrandButtonCrop" class="manageButton col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10" type="button" value="Crop" />
<input id="postErrandCropX" class="postErrandData" name="postErrandCropX" type="hidden" />
<input id="postErrandCropY" class="postErrandData" name="postErrandCropY" type="hidden" />
<input id="postErrandCropW" class="postErrandData" name="postErrandCropW" type="hidden" />
<input id="postErrandCropH" class="postErrandData" name="postErrandCropH" type="hidden" />
<input id="postErrandCroppedPicture" class="postErrandData" name="postErrandCroppedPicture" type="hidden" />
</div>
<div id="postErrandLocationArea" class="manageArea row">
@Html.LabelFor(m => m.Location, new { @id = "postErrandLocationLabel", @class = "manageLabel col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-3 col-lg-offset-1 col-lg-4" })
@Html.TextBoxFor(m => m.Location, new { @id = "postErrandLocationField", @class = "manageField col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-7 col-lg-offset-0 col-lg-6", @placeholder = "location" })
@Html.ValidationMessageFor(m => m.Location, "", new { @id = "postErrandLocationValidation", @class = "manageValidation col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-4 col-md-7 col-lg-offset-5 col-lg-6" })
</div>
<!-- place autocomplete for Location -->
<script>
new google.maps.places.Autocomplete((document.getElementById('postErrandLocationField')), { types: ['geocode'] });
</script>
<hr />
<!-- time autocomplete for StartDateTime -->
<script>
$(document).ready(function defaultStartDateTime() {
startDateTime = new Date();
var h = startDateTime.getHours() + 1;
if (h > 23) {
h = "00"
}
else {
if (h < 10) {
h = "0" + h
}
}
var d = startDateTime.getDate();
if (d < 10) {
d = "0" + d
}
var m = startDateTime.getMonth() + 1;
if (m < 10) {
m = "0" + m
}
var y = startDateTime.getFullYear();
placeholderStartDateTime = "";
placeholderStartDateTime = m + "/" + d + "/" + y + " " + h + ":00";
if (placeholderStartDateTime != '') {
document.getElementById('postErrandStartDateTimeField').value = placeholderStartDateTime;
};
})
</script>
<div id="postErrandStartDateTimeArea" class="postErrandArea row">
@Html.LabelFor(m => m.StartDateTime, new { @id = "postErrandStartDateTimeLabel", @class = "manageLabel col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5" })
@Html.LabelFor(m => m.ASAP, new { @id = "postErrandASAPLabel", @class = "manageLabel col-xs-5 col-sm-5 col-md-5 col-lg-5" })
@Html.TextBoxFor(m => m.StartDateTime, new { @id = "postErrandStartDateTimeField", @class = "manageField col-xs-offset-1 col-xs-6 col-sm-offset-1 col-sm-4 col-md-offset-5 col-md-3 col-lg-offset-5 col-lg-3", @onblur = "document.getElementById('postErrandEndDateTimeField').value = document.getElementById('postErrandStartDateTimeField').value;" })
@Html.HiddenFor(m => m.StartDateTime, new { @id = "postErrandStartDateTimeHiddenField", @class = "manageField col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-7 col-lg-offset-0 col-lg-6" })
<div id="postErrandASAPBuffer" class="postErrandBuffer col-xs-3 col-sm-5 col-md-2 col-lg-2"></div>
@Html.CheckBoxFor(m => m.ASAP, new { @id = "postErrandASAPField", @class = "manageField col-xs-1 col-sm-1 col-md-1 col-lg-1", @onclick = "document.getElementById('postErrandStartDateTimeHiddenField').value = placeholderStartDateTime; document.getElementById('postErrandStartDateTimeField').disabled=this.checked;" })
@Html.ValidationMessageFor(m => m.StartDateTime, "", new { @id = "postErrandStartDateTimeValidation", @class = "manageValidation col-xs-offset-1 col-xs-6 col-sm-offset-1 col-sm-4 col-md-offset-5 col-md-3 col-lg-offset-5 col-lg-3" })
</div>
<div id="postErrandEndDateTimeArea" class="postErrandArea row">
@Html.LabelFor(m => m.EndDateTime, new { @id = "postErrandEndDateTimeLabel", @class = "manageLabel col-xs-offset-1 col-xs-5 col-sm-offset-1 col-sm-5 col-md-offset-1 col-md-5 col-lg-offset-1 col-lg-5" })
@Html.LabelFor(m => m.DurationInHours, new { @id = "postErrandDurationInHoursLabel", @class = "manageLabel col-xs-5 col-sm-5 col-md-5 col-lg-5" })
@Html.TextBoxFor(m => m.EndDateTime, new { @id = "postErrandEndDateTimeField", @class = "manageField col-xs-offset-1 col-xs-6 col-sm-offset-1 col-sm-4 col-md-offset-5 col-md-3 col-lg-offset-5 col-lg-3" })
<div id="postErrandDurationInHoursBuffer" class="postErrandBuffer col-xs-1 col-sm-4 col-md-1 col-lg-1"></div>
@Html.TextBoxFor(m => m.DurationInHours, new { @id = "postErrandDurationInHoursField", @class = "manageField col-xs-3 col-sm-2 col-md-2 col-lg-2" })
@Html.ValidationMessageFor(m => m.EndDateTime, "", new { @id = "postErrandEndDateTimeValidation", @class = "manageValidation col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-4 col-md-7 col-lg-offset-5 col-lg-6" })
@Html.ValidationMessageFor(m => m.DurationInHours, "", new { @id = "postErrandDurationInHoursValidation", @class = "manageValidation col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-4 col-md-7 col-lg-offset-5 col-lg-6" })
</div>
<hr />
<div id="postErrandOfferingArea" class="postErrandArea row">
@Html.LabelFor(m => m.Currency, new { @id = "postErrandCurrencyLabel", @class = "manageLabel col-xs-offset-1 col-xs-4 col-sm-offset-1 col-sm-4 hidden-md hidden-lg" })
@Html.LabelFor(m => m.Offering, new { @id = "postErrandOfferingLabel", @class = "manageLabel col-xs-offset-0 col-xs-3 col-sm-offset-0 col-sm-3 col-md-offset-1 col-md-3 col-lg-offset-1 col-lg-4" })
@Html.DropDownListFor(Currencies => Currencies.Currency, new SelectList(ViewBag.currency as List<SelectListItem>, "Value", "Text"), "-select-", new { @id = "postErrandCurrencyField", @class = "manageField col-xs-offset-1 col-xs-4 col-sm-offset-1 col-sm-4 col-md-offset-0 col-md-3 col-lg-offset-0 col-lg-2" })
@Html.TextBoxFor(m => m.Offering, new { @id = "postErrandOfferingField", @class = "manageField col-xs-offset-0 col-xs-6 col-sm-offset-0 col-sm-6 col-md-offset-0 col-md-4 col-lg-offset-0 col-lg-4", @placeholder = "$$$" })
@Html.ValidationMessageFor(m => m.Currency, "", new { @id = "postErrandCurrencyValidation", @class = "manageValidation col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-4 col-md-7 col-lg-offset-5 col-lg-6" })
@Html.ValidationMessageFor(m => m.Offering, "", new { @id = "postErrandOfferingValidation", @class = "manageValidation col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-4 col-md-7 col-lg-offset-5 col-lg-6" })
</div>
<div id="postErrandPriceArea" class="postErrandArea row">
@Html.HiddenFor(m => m.errandTax, new { @id = "postErrandTaxField", @class = "postErrandTaxField" })
@Html.LabelFor(m => m.Price, new { @id = "postErrandPriceLabel", @class = "manageLabel col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-3 col-lg-offset-1 col-lg-4" })
@Html.TextBoxFor(m => m.Price, new { @id = "postErrandPriceField", @class = "manageField col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-7 col-lg-offset-0 col-lg-6", @disabled = true })
@Html.HiddenFor(m => m.Price, new { @id = "postErrandPriceHiddenField", @class = "manageField col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-7 col-lg-offset-0 col-lg-6" })
</div>
<!-- calculate errand tax -->
<script>
document.getElementById('postErrandOfferingField').onchange = function () { calculateErrandTax() };
function calculateErrandTax() {
var offering = document.getElementById('postErrandOfferingField').value;
var userRating = document.getElementById('postErrandUserRating').value;
var currency = document.getElementById('postErrandCurrencyField').value;
if (offering < 50) {
if (userRating > 5 * 0.95) {
var price = (offering * 1.12);
document.getElementById('postErrandTaxField').value = 0.12;
document.getElementById('postErrandPriceField').value = currency + " " + price.toFixed(2);
document.getElementById('postErrandPriceHiddenField').value = currency + " " + price.toFixed(2);
}
else {
var price = offering * 1.15;
document.getElementById('postErrandTaxField').value = 0.15;
document.getElementById('postErrandPriceField').value = currency + " " + price.toFixed(2);
document.getElementById('postErrandPriceHiddenField').value = currency + " " + price.toFixed(2);
}
}
else if (offering < 100) {
if (userRating > 5 * 0.95) {
var price = offering * 1.10;
document.getElementById('postErrandTaxField').value = 0.10;
document.getElementById('postErrandPriceField').value = currency + " " + price.toFixed(2);
document.getElementById('postErrandPriceHiddenField').value = currency + " " + price.toFixed(2);
}
else {
var price = offering * 1.12;
document.getElementById('postErrandTaxField').value = 0.12;
document.getElementById('postErrandPriceField').value = currency + " " + price.toFixed(2);
document.getElementById('postErrandPriceHiddenField').value = currency + " " + price.toFixed(2);
}
}
else if (offering < 500) {
if (userRating > 5 * 0.95) {
var price = offering * 1.07;
document.getElementById('postErrandTaxField').value = 0.07;
document.getElementById('postErrandPriceField').value = currency + " " + price.toFixed(2);
document.getElementById('postErrandPriceHiddenField').value = currency + " " + price.toFixed(2);
}
else {
var price = offering * 1.10;
document.getElementById('postErrandTaxField').value = 0.10;
document.getElementById('postErrandPriceField').value = currency + " " + price.toFixed(2);
document.getElementById('postErrandPriceHiddenField').value = currency + " " + price.toFixed(2);
}
}
else if (offering >= 500) {
if (userRating > 5 * 0.95) {
var price = offering * 1.05;
document.getElementById('postErrandTaxField').value = 0.05;
document.getElementById('postErrandPriceField').value = currency + " " + price.toFixed(2);
document.getElementById('postErrandPriceHiddenField').value = currency + " " + price.toFixed(2);
}
else {
var price = offering * 1.07;
document.getElementById('postErrandTaxField').value = 0.07;
document.getElementById('postErrandPriceField').value = currency + " " + price.toFixed(2);
document.getElementById('postErrandPriceHiddenField').value = currency + " " + price.toFixed(2);
}
}
};
</script>
</div>
<div id="postErrandButtonSection" class="manageSection">
<div id="postErrandButtonArea" class="manageArea row">
<button id="postErrandButton" class="manageButton col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-1 col-lg-10" type="submit">
Submit
</button>
</div>
</div>
}
</section>
<div id="postErrandReturnToMenuSection" class="manageReturnToMenuSection">
@Html.ActionLink("Return to Menu", "Index", "", htmlAttributes: new { @id = "postErrandReturnToMenuButton", @class = "manageReturnToMenuButton" })
</div>
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<!-- jCrop script -->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/tapmodo/Jcrop/master/js/jquery.Jcrop.min.js"></script>
<script type="text/javascript">
$(function () {
if ($('#postErrandCroppingArea').width() > 500) {
$('#postErrandPictureField').change(function () {
$('#postErrandOriginal').hide();
var reader = new FileReader();
reader.onload = function (e) {
$('#postErrandOriginal').show();
$('#postErrandOriginal').attr("src", e.target.result);
$('#postErrandOriginal').Jcrop({
onChange: SetCoordinates,
onSelect: SetCoordinates,
aspectRatio: 1,
boxWidth: 450,
addClass: 'postErrandCropping'
});
}
reader.readAsDataURL($(this)[0].files[0]);
});
}
else {
$('#postErrandPictureField').change(function () {
$('#postErrandOriginal').hide();
var reader = new FileReader();
reader.onload = function (e) {
$('#postErrandOriginal').show();
$('#postErrandOriginal').attr("src", e.target.result);
$('#postErrandOriginal').Jcrop({
onChange: SetCoordinates,
onSelect: SetCoordinates,
aspectRatio: 1,
boxWidth: 250,
addClass: 'postErrandCropping'
});
}
reader.readAsDataURL($(this)[0].files[0]);
});
}
$('#postErrandButtonCrop').click(function () {
var x1 = $('#postErrandCropX').val();
var y1 = $('#postErrandCropY').val();
var height = $('#postErrandCropH').val();
var width = $('#postErrandCropW').val();
var canvas = $("#postErrandCropped")[0];
var context = canvas.getContext('2d');
var img = new Image();
img.onload = function () {
canvas.height = height;
canvas.width = width;
context.drawImage(img, x1, y1, width, height, 0, 0, width, height);
var image = canvas.toDataURL().replace(/^data:image\/[a-z]+;base64,/, "");
$('#postErrandCroppedPicture').val(image);
//$('#postErrandButtonUpload').show();
$('#postErrandCropped').hide();
$('#postErrandButtonCrop').hide();
};
img.src = $('#postErrandOriginal').attr("src");
});
});
function SetCoordinates(c) {
$('#postErrandCropX').val(c.x);
$('#postErrandCropY').val(c.y);
$('#postErrandCropW').val(c.w);
$('#postErrandCropH').val(c.h);
$('#postErrandButtonCrop').show();
};
</script>
<!-- pulling in Google Places library -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDQXVljq4LT-imCbZkOcC7_IiwcECEm0cc&libraries=places"></script>
<!-- pulling in DateTimePicker -->
<script src="~/Scripts/jquery.datetimepicker.full.min.js"></script>
<script>
jQuery('#postErrandStartDateTimeField').datetimepicker({
format: 'm/d/Y H:i',
step: '30',
minDate: 0,
defaultDate: 0,
defaultTime: 0,
yearStart: 2017,
yearEnd: 2030,
});
</script>
<script>
jQuery('#postErrandEndDateTimeField').datetimepicker({
format: 'm/d/Y H:i',
step: '30',
minDate: 0,
defaultDate: 0,
defaultTime: 0,
yearStart: 2017,
yearEnd: 2030,
});
</script>
}
奇怪的是,它不是特定于单个脚本,而是影响所有这些脚本,但jCrop,Google Places Lirbary和DateTimePicker除外(所有这些都在我的代码中声明)。
以下是我从控制台获得的内容 - 但不知道如何处理...
SCRIPT5022: SCRIPT5022: Bootstrap's JavaScript requires jQuery
bootstrap.min.js (6,31)
SCRIPT5007: SCRIPT5007: Unable to get property 'concat' of undefined or null reference
jquery.mobile.min.js (4,5765)
SEC7111: HTTPS security is compromised by http://jcrop-cdn.tapmodo.com/v2.0.0-RC1/js/Jcrop.js
localhost:44356 (1,1)
2 SEC7111: HTTPS security is compromised by http://jcrop-cdn.tapmodo.com/v2.0.0-RC1/css/Jcrop.css
localhost:44356 (1,1)
SCRIPT5022: SCRIPT5022: Bootstrap's JavaScript requires jQuery
bootstrap.min.js (6,31)
SCRIPT5007: SCRIPT5007: Unable to get property 'concat' of undefined or null reference
jquery.mobile.min.js (4,5765)
SEC7111: HTTPS security is compromised by http://jcrop-cdn.tapmodo.com/v2.0.0-RC1/js/Jcrop.js
PostErrand (1,1)
2 SEC7111: HTTPS security is compromised by http://jcrop-cdn.tapmodo.com/v2.0.0-RC1/css/Jcrop.css
PostErrand (1,1)
SCRIPT1009: SCRIPT1009: Expected '}'
PostErrand (233,13)
You have included the Google Maps API multiple times on this page. This may cause unexpected errors.
14 SCRIPT5: SCRIPT5: Access is denied.
PostErrand (1,1)
5 SCRIPT5: Access is denied.
common.js (22,123)
答案 0 :(得分:0)
好的 - 这有很多原因,但是你告诉我如何理解正在发生的事情已经给了我很多帮助,谢谢。
<!-- autopopulate errand values with current location -->
<script>
$(document).ready(function defaultPostValues() {
if (!navigator.geolocation) return;
navigator.geolocation.getCurrentPosition(function (userCoordinates) {
geocoder = new google.maps.Geocoder();
userLatLng = new google.maps.LatLng(userCoordinates.coords.latitude, userCoordinates.coords.longitude);
document.getElementById('postErrandLatitudePosted').value = userCoordinates.coords.latitude;
document.getElementById('postErrandLongitudePosted').value = userCoordinates.coords.longitude;
geocoder.geocode({ 'latLng': userLatLng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var result = results[0];
locationPlaceholder = "";
for (var i = 0, len = result.address_components.length; i < len; i++) {
var addressComponent = result.address_components[i];
if (addressComponent.types.indexOf("locality") >= 0) locationPlaceholder = addressComponent.long_name;
}
if (locationPlaceholder != '') {
document.getElementById('postErrandLocationPosted').value = locationPlaceholder;
document.getElementById('postErrandLocationField').value = locationPlaceholder;
}
}
});
});
这里我只是错过了最后一次
});
</script>