我有以下HTML表单:
<form action="../start_timer" class="start_timer" id="447" method="post" accept-charset="utf-8">
<input type="hidden" name="shift_id" value="447">
<input type="hidden" name="latitude" class="latitude">
<input type="hidden" name="longitude" class="longitude">
<input type="submit" value="Start">
</form>
和以下jQuery来处理表单submition:
$(document).ready(function() {
$( "form.start_timer, .form.end_timer" ).submit(function(e) {
if( $(this).children( ".latitude" ).val().length === 0 || $(this).children( ".longitude" ).val().length === 0 ){
e.preventDefault();
navigator.geolocation.getCurrentPosition(foundLocation, noLocation,{timeout:10000});
submits=0;
$( ".longitude" ).change(function(e) {
if (submits==0) {
$(this).submit();
}
submits++;
});
}else if( $(this).children( ".latitude" ).val().length !== 0 && $(this).children( ".longitude" ).val().length !== 0 ){
return true;
}
});
});
这是填充隐藏字段的foundLocation
函数:
function foundLocation( position ){
var lat = position.coords.latitude;
var long = position.coords.longitude;
if ($( ".latitude" ).val( lat )!="lat") {
$( ".latitude" ).val( lat ).trigger('change');
}
if ($( ".longitude" ).val( long )!="long") {
$( ".longitude" ).val( long ).trigger('change');
}
}
它会在else if
案例中停止,并且不会真正提交表单。
如何在修改后实际提交?
非常感谢任何帮助或指导。
答案 0 :(得分:1)
问题是getCurrentPosition函数是异步的,所以你在函数返回值之前触发表单提交,表单提交应该是这样的:
entityB.Include(p => p.Cs.Select(pr => pr.EntityB))
答案 1 :(得分:0)
您的foundLocation函数错误,您的事件附件也是错误的。
你的foundLocation应该是:
function foundLocation( position ){
var lat = position.coords.latitude;
var long = position.coords.longitude;
$( ".latitude" ).val( lat );
$( ".longitude" ).val( long ).trigger('change');
}
并尝试附加提交事件,如下所示:
$(document).ready(function() {
$( "form.start_timer, .form.end_timer" ).submit(function(e) {
var dat = $(this);
if( $(this).children( ".latitude" ).val().length === 0 || $(this).children( ".longitude" ).val().length === 0 ){
e.preventDefault();
dat.on('change', '.longitude, .latitude', function(e) {
if(dat.find('.latitude').val() != "" && dat.find('.longitude').val() != "") dat.submit();
});
navigator.geolocation.getCurrentPosition(foundLocation, noLocation,{timeout:10000});
}
});
});